我不确定我得到的错误是否:
***ERROR**: Can't bind to 'obj.Name' since it isn't a known property of 'comp'.*
是Angular不允许这种行为的结果。其目的只是绑定到@input对象属性。代码:
// comp.component.ts
...
@Input() obj: ObjType = {
Name: ''
}
// comp2.html
...
// this HTML is passing the value from comp2.html to comp component
<app-comp [obj.Name]="MyNameIs"></app-comp>
我希望"MyNameIs“值被传递回obj.Name属性,但我得到了上面的错误。这是不是我做得不对,或者只是Angular (v5)做不到?
发布于 2018-06-09 03:46:48
@Input
是为父零部件到子零部件特性绑定保留的。
例如:parent.component.ts应该包含一个属性:
public myNameIs = { name: 'Marie Curie'};
父模板内的parent.component.html包含子组件并绑定到属性:
<child-comp [obj]="MyNameIs"></child-comp>
子组件内的child.component.ts使用@Input
装饰器绑定到属性。
@Input() obj: ObjType = {}
child.component.html,然后您可以在您的子组件或模板中使用该属性。
<h3> {{obj?.name}}</h3>
这是一个StackBlitz demo for your use case
在您的情况下,您不能绑定到obj.Name
**,,因为** Input()
obj
装饰器绑定到对象,而不是绑定到obj.Name
**.**的特定属性。要修复您的错误,您只需在:<child-comp [obj]="MyNameIs"></child-comp>
中传递值(请参阅我创建的工作StackBlitz )。
https://stackoverflow.com/questions/50767343
复制相似问题