Angular 更改子组件的值时,父组件 属性 不会更新
Angular Parent Component property does not get updated when changing value from Child Component
下面我不明白为什么会出现编译错误Cannot use variable 'ft' as the left-hand side of an assignment expression. Template variables are read-only.
如果我删除 banana-syntax 并将其保留为 [fileType],那么我没有错误,但是当我更改子组件中 Select 控件的值时,父组件中的项目集合文件类型不会更新。我应该怎么做才能更新父集合?
父组件
<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; let i = index" [(fileType)]="fileTypes[i]"></app-file-type-list-item>
如果它不起作用,请提供 Angular 编译器选项的详细信息,以防这些选项未启用
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
下面我不明白为什么会出现编译错误Cannot use variable 'ft' as the left-hand side of an assignment expression. Template variables are read-only.
如果我删除 banana-syntax 并将其保留为 [fileType],那么我没有错误,但是当我更改子组件中 Select 控件的值时,父组件中的项目集合文件类型不会更新。我应该怎么做才能更新父集合?
父组件
<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; let i = index" [(fileType)]="fileTypes[i]"></app-file-type-list-item>
如果它不起作用,请提供 Angular 编译器选项的详细信息,以防这些选项未启用
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true