Estoy tratando de crear mi propia directiva en Angular 4. Pero recibí este error al vincular la propiedad de la clase en la plantilla del componente.
Error de la consola:
Unhandled Promise rejection: Template parse errors: Can't bind to 'data' since it isn't a known property of 'tree'. ("<tree [ERROR ->][data]="data"></tree>"):Mi vista de árbol-component.ts:
@Component({ selector: 'app-tree-view', template: '<tree [data]="data"></tree>' }) export class TreeViewComponent implements OnInit { @Input() data: any[]; constructor() { this.data = [ { label: 'a1', subs: [ { label: 'a11', subs: [ { label: 'a111', subs: [ { label: 'a1111' }, { label: 'a1112' } ] }, { label: 'a112' } ] }, { label: 'a12', } ] } ]; } ngOnInit() { } }Aquí está mi archivo de script completo: https://pastebin.com/hDyX2Kjj
¿Hay alguien que sepa sobre esto? TiA
Cada componente, directiva y tubería debe registrarse en @NgModule()
@NgModule({ declarations: [TreeViewComponent] }) export class AppModule {}Para más detalles ver
Tengo el mismo error cuando ejecuto la prueba para ParentComponent. Dentro estaba el componente ChildComponent con la propiedad @Input: string;. Ambos componentes también se declararon dentro de app.module.ts.
He arreglado esto así (archivo de prueba del componente principal):
beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ParentComponent, ChildComponent]// added child component declaration here }) .compileComponents(); }));Como señaló The Aelfinn , si está utilizando su Componente a través de Módulos, necesita exportarlo. ¡ PERO no debe importarlo, exportarlo y declararlo en el Módulo en el que desea usarlo, ya que no forma parte de este Módulo!
Así que suponga que tiene un TreeViewStuffModule que declara el TreeViewComponent y un DoSomethingWithTreeViewModule donde se usa el TreeViewComponent, sus declaraciones serían las siguientes:
@NgModule({ declarations: [ TreeViewComponent ], exports: [ TreeViewComponent ] }) export class TreeViewStuffModule { } @NgModule({ imports: [ TreeViewStuffModule ] }) export class DoSomethingWithTreeViewModule