Angular 更改子组件的值时,角度父组件属性不会更新
下面我不明白为什么会出现编译错误,不能使用变量“ft”作为赋值表达式的左侧。模板变量是只读的 如果删除香蕉语法并将其保留为[fileType],则没有错误,但当我从子组件中的Select控件更改值时,父集合fileType中的项不会得到更新。如何更新父集合 父组件Angular 更改子组件的值时,角度父组件属性不会更新,angular,angular9,Angular,Angular9,下面我不明白为什么会出现编译错误,不能使用变量“ft”作为赋值表达式的左侧。模板变量是只读的 如果删除香蕉语法并将其保留为[fileType],则没有错误,但当我从子组件中的Select控件更改值时,父集合fileType中的项不会得到更新。如何更新父集合 父组件 <app-file-type-list-item class="form-row align-items-end" *ngFor="let ft of fileTypes" [(fileT
<app-file-type-list-item class="form-row align-items-end" *ngFor="let ft of fileTypes" [(fileType)]="ft"></app-file-type-list-item>
<select name="fileType01" id="fileType01" [(ngModel)]="fileType" (change)="onFileTypeChange()">
<option *ngFor="let fileType of fileTypes" [ngValue]="fileType">
{{fileType.name}}</option>
</select>
export class FileTypeListItemComponent {
@Input() public fileType: FileType;
@Output() fileTypeChange = new EventEmitter();
public fileTypes;
constructor(private _entityManagerService: POPEntityManagerService) {
this.fileTypes = // filled from datasource
onFileTypeChange(): void {
this.fileTypeChange.emit(this.fileType);
}
}
子组件
<app-file-type-list-item class="form-row align-items-end" *ngFor="let ft of fileTypes" [(fileType)]="ft"></app-file-type-list-item>
<select name="fileType01" id="fileType01" [(ngModel)]="fileType" (change)="onFileTypeChange()">
<option *ngFor="let fileType of fileTypes" [ngValue]="fileType">
{{fileType.name}}</option>
</select>
export class FileTypeListItemComponent {
@Input() public fileType: FileType;
@Output() fileTypeChange = new EventEmitter();
public fileTypes;
constructor(private _entityManagerService: POPEntityManagerService) {
this.fileTypes = // filled from datasource
onFileTypeChange(): void {
this.fileTypeChange.emit(this.fileType);
}
}
您可以尝试使用以下语法: 如果不起作用,请提供角度编译器选项的详细信息,以防这些选项未启用 fullTemplateTypeCheck:true, strictInjectionParameters:true
你用的是什么版本的Angular?我用的是版本9是的,这个语法似乎有效。没有错误,父组件集合将更新。我想我可以删除文件类型的let ft部分吧?我不知道这个语法,这是做事情的正式方式吗?@Sam问题是你有一个与component prop相同的模板变量。如果您阅读Angular Ivy compatibility guide,您可以看到它的声明-现在将值分配给仅模板变量(如ngFor=let item of items中的item)是一个错误。以前,编译器会忽略这些分配。你说得对。我对此一无所知。我以前在我的应用程序中到处都这样做,所以这有点痛苦。另外,我知道这是常春藤的进化,但是Angular团队提供了一个官方的方法来修复这个错误会很好。我想你的方法是好的,我只是希望它不会打破任何角度的原则,我知道,他们试图改变,并产生更好的错误,但仍然。您可以看到关于此的线程: