【发布时间】:2019-12-25 21:43:59
【问题描述】:
尽管问题的措辞相似,但这个问题不能通过this one 之类的答案解决。
我正在使用自定义组件,并按预期进行以下工作。没有错误,没有警告。
<app-setter [(setting)]="records[0]"></app-setter>
<app-setter [(setting)]="records[1]"></app-setter>
<app-setter [(setting)]="records[2]"></app-setter>
当然,我更喜欢使用这样的模板生成器。
<app-setter *ngFor="let record of records;"
[(setting)]="record"></app-setter>
这会产生以下错误。
无法分配给引用或变量!
谷歌搜索会导致很多关于同一主题的点击 - 组件中的变量与生成的标签的 ID 之间存在冲突。据我所知,这里不是这种情况。我将组件中的唯一字段重命名为 records,我什至没有看到任何 ID 分配给生成的标签。
问题的原因可能是什么?如何进一步诊断?我不确定如何学习实际发生的地方(它是 compiler.js:xxxx,它告诉我什么都没有)。
编辑
我尝试了以下但没有成功。
<ng-container *ngFor="let record of records;">
<app-setter [(setting)]="record"></app-setter>
</ng-container>
但是,我注意到从香蕉盒中取出香蕉会使错误消失(当然结果是双向绑定被破坏。这有效:
<ng-container *ngFor="let record of records;">
<app-setter [setting]="record"></app-setter>
</ng-container>
它告诉我的很少。但它说明了什么,对吧?
组件代码如下所示。
export class AssessmentComponent implements OnInit {
constructor() { }
records: Record[];
ngOnInit() { this.records = [new Record("x", 3), new Record("y", 2)]; }
onAddition(event: Record) { console.log(); }
}
【问题讨论】:
-
请提供您的问题的堆栈闪电,我们看到的代码应该可以工作。
-
如果您的设置是一个对象,您不需要使用
@Output- 允许对对象的属性进行任何更改-,但代码必须有效 -
@AJT_82 不,显然不应该。我自己有点惊讶,但显然,必须通过索引引用原始数组而不是单个项目。至少,这行得通,而这行不通。检查下面的答案。我也会为努力和额外的洞察力 +1。此外,如果您有任何想法,请随时提出为什么我们需要这样做。
-
这就是我要求演示的原因,一定有一些我们没有看到的东西,因为你不应该需要像在任何一个答案中那样做;)那里我们看到的代码绝对没有问题。
-
@AJT_82 很好,所以不是我发疯了,哈哈。
标签: angular typescript angular2-template