Angular 更改子组件的值时,角度父组件属性不会更新

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

下面我不明白为什么会出现编译错误,不能使用变量“ft”作为赋值表达式的左侧。模板变量是只读的

如果删除香蕉语法并将其保留为[fileType],则没有错误,但当我从子组件中的Select控件更改值时,父集合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);
  }
}
子组件

<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团队提供了一个官方的方法来修复这个错误会很好。我想你的方法是好的,我只是希望它不会打破任何角度的原则,我知道,他们试图改变,并产生更好的错误,但仍然。您可以看到关于此的线程: