我正在尝试构建一个演示应用程序,该应用程序利用" Kendo UI for Angular 2"控件,但我似乎只能使Button控件工作。所有其他控件显示错误或根本不显示。我真的可以使用一些帮助,所以我可以弄清楚这个产品是否值得我们正在启动的新的长期项目的成本。
在下面的示例中,我使用Angular 2显示其按钮和下拉列表。只有按钮有效。请帮我把这个样本运行起来。我花了很长时间试图解决这个问题。 谢谢!
package.json(为简洁而截断)
"dependencies": {
...
"@progress/kendo-angular-buttons": "^0.10.2",
"@progress/kendo-angular-dropdowns": "^0.10.2",
...
systemjs.config.js(为简洁而截断)
map: {
app: 'app',
'rxjs': 'npm:rxjs',
'@progress': 'npm:@progress',
'@telerik': 'npm:@telerik',
...
},
packages: {
"@progress/kendo-angular-dropdowns": { main: './dist/npm/js/main.js', defaultExtension: 'js' },
"@progress/kendo-angular-buttons": { main: './dist/npm/js/main.js', defaultExtension: 'js' },
'@telerik/kendo-dropdowns-common': { main: './dist/npm/js/main.js', defaultExtension: 'js' },
...
}
app.module.ts
// Application
import { AppComponent } from './app.component';
// Misc Modules
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { NgModule } from '@angular/core';
// Kendo Controls
import { ButtonsModule } from '@progress/kendo-angular-buttons';
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
// Test Pages
import { KButtonComponent } from './components/k.button.component'
import { KDropDownListComponent } from './components/k.dropdownlist.component'
@NgModule({
imports: [
BrowserModule, FormsModule, ReactiveFormsModule, HttpModule, ButtonsModule, DropDownsModule ],
declarations: [ AppComponent, KButtonComponent, KDropDownListComponent ],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule { }
app.component.ts
import { Component } from '@angular/core';
// Kendo Controls
import { ButtonsModule } from '@progress/kendo-angular-buttons';
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<button kendoButton (click)="onButtonClick()" [primary]=true>Button!</button> This works!
<kendo-dropdownlist [data]="listItems"></kendo-dropdownlist> This doesn't even display.
`,
styleUrls: [ '../node_modules/@progress/kendo-angular-buttons/dist/npm/css/main.css', '../node_modules/@progress/kendo-angular-dropdowns/dist/npm/css/main.css' ]
})
export class AppComponent {
listItems: Array<string> = ['This', 'is', 'really', 'upsetting'];
onButtonClick() {
alert('The only working Kendo component');
}
}
答案 0 :(得分:2)
使用npm install --save @telerik/kendo-theme-default
命令安装default Kendo theme(https://www.npmjs.com/package/@telerik/kendo-theme-default)。
在index.html中指定CSS文件,所有控件都将按预期显示。
<link rel="stylesheet" href="./node_modules/@telerik/kendo-theme-default/dist/all.css">
答案 1 :(得分:1)
除了systemjs.config.js配置外,一切看起来都正确。您的包定义需要将映射与您定义的库相匹配。这是我的配置和工作,只需用您的组件定义替换我的网格组件定义。
<强> systemjs.config.js 强>
// map tells the System loader where to look for things
map: {
'app': 'dist',
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
...
'@progress/kendo-angular-intl': 'npm:@progress/kendo-angular-intl',
'@progress/kendo-angular-grid': 'npm:@progress/kendo-angular-grid',
'@telerik/kendo-intl': 'npm:@telerik/kendo-intl',
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
'app': {
main: './app.main.js',
defaultExtension: 'js'
},
...
'@progress/kendo-angular-intl': {
main: './dist/npm/js/main.js',
defaultExtension: 'js'
},
'@progress/kendo-angular-grid': {
main: './dist/npm/js/main.js',
defaultExtension: 'js'
},
'@telerik/kendo-intl': {
main: './dist/npm/js/main.js',
defaultExtension: 'js'
}
}
});