Angular2 Обновление RC6
после обновления моего проекта до RC6
возникают следующие ошибки:
Error: Typescript found the following errors:
app.component.ts (12, 3): Argument of type '{ moduleId: string; selector: string; templateUrl: string; styleUrls: string[]; directives: (type...' is not assignable to parameter of type 'ComponentMetadataType'.
Object literal may only specify known properties, and 'directives' does not exist in type 'ComponentMetadataType'.
app.component.ts
import {Component, OnInit} from '@angular/core';
import {NavbarComponent} from "./shared/navbar/navbar.component";
import {ROUTER_DIRECTIVES} from "@angular/router";
import {SidebarComponent} from "./shared/sidebar/sidebar.component";
import {FooterComponent} from "./shared/footer/footer.component";
@Component({
moduleId: module.id,
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
directives: [NavbarComponent, SidebarComponent, FooterComponent, ROUTER_DIRECTIVES]
})
export class AppComponent implements OnInit {
ngOnInit(): any {
return undefined;
}
}
Мне нужно какое-то время, но я не могу понять это.
Ответы
Ответ 1
Directives
и pipes
должны быть определены в @NgModule
Если я правильно читаю. Поддержка внутри @Component
удаляется.
Итак, просто переместите свои директивы в NgModule
В настоящий момент у вас есть: компонент A с директивами Ac и компонент B с директивами Bc и, скорее всего, один AppModule, вам просто нужно переместить Ac и Bc в AppModule. И да, вы должны удалить их из объявления @Component
Директивы будут немедленно доступны в компонентах, определенных в вашем модуле.
Пример из OP:
app.component.ts
// imports...
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
})
export class AppComponent {}
app.module.ts
// imports...
@NgModule({
declarations: [
AppComponent,
NavbarComponent,
SidebarComponent,
FooterComponent
],
imports: [
BrowserModule,
CommonModule,
FormsModule
],
providers: [
//MyService, MyOtherService
],
entryComponents: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
См. документацию doc для маршрутизатора: маршрутизатор
Ответ 2
directives
и pipes
должны быть определены в ваших объявлениях @NgModule
с RC6.
Удалите их из вашего декоратора @Component
.
Ответ 3
Для Angular 2 окончательной версии 2.0.0.0
труба должна быть объявлена в разделе объявления файла app.module.ts
import {KeysPipe} from './keys.pipe';
@NgModule({
imports: [ BrowserModule, FormsModule, HttpModule ],
declarations: [ AppComponent, LoginComponent,ArticleComponent,**KeysPipe** ],
bootstrap: [ AppComponent, LoginComponent,ArticleComponent ],
})
просто соблюдайте реализацию клавиатуры в приведенных выше фрагментах кода.