我有一个Angular 2.47 alpha版本的组件,它看起来像这样:
@Component({
selector: 'app',
template: `
<div class="col-md-4" *ngFor="#data of datas">
<OtherComponent [dataDetails]="data"></OtherComponent>
<br />
</div>
</div>
`
})
export class App {
datas: Array<Object> = [];
}
代码工作正常; data
已按预期在循环中传递给OtherComponent
。但是在我尝试移动到角度2测试版之前,它停止工作并开始抛出此错误:
Can't bind to 'dataDetails' since it isn't a known native property ("
我犯了错误吗?
答案 0 :(得分:1)
这里有三个可能的问题,其中两个已被提及:
OtherComponent
需要在directives
App
中声明
dataDetails
需要在inputs
OtherComponent
中声明
假设这两个都是真的,您确定在OtherComponent
之前加载了App
吗?如果没有,则需要使用forwardRef
:
替换:
@Component({
selector: 'app',
template: `...`,
directives: [OtherComponent]
})
with:
@Component({
selector: 'app',
template: `...`,
directives: [forwardRef(()=>OtherComponent) OtherComponent] //untested syntax
})
答案 1 :(得分:0)
您需要通知Angular 2 OtherComponent
存在。假设该类具有相同的名称,这就是您的Component装饰器应该是这样的:
@Component({
selector: 'app',
template: `...`,
directives: [OtherComponent]
})
不相关的自定义标签名称不应该是驼峰式的,它们应该是kebab-case。当它们落入DOM时,它们会变成小写,这与您的代码不一致。此外,自定义标记名称应包含at least one dash。