有多種事情錯在這裏
- 你不需要
[(selectedValues)]="parentValues"
語法,因爲從孩子到父母什麼也沒有 - [selectedValues]="parentValues"
將工作相同。
- 它只工作,因爲你傳遞一個數組並修改子內的數組,所以 - 副作用。將它傳遞給數組的副本,它將停止工作。
- 您的
@Output() eventEmitter
未使用。如果你不喜歡的東西[selectedValues]="parentValues" (eventEmitter)="someEventHandlingMethod()"
一個解決方案,你正在努力實現的是簡單地刪除@Input()
參數,並更改@Output()
一個發出一個簡單的字符串,然後父手柄會是怎樣使用它通過將它推入數組並同時設置單個值。
兒童:
@Output()
onItemSelected = new EventEmitter<string>();
...
public addValue(value: string) {
this.onItemSelected.emit(value);
}
家長:
export class App {
parentValues: Array<string> = [];
parentSingleValue = '';
itemSelected(item: string) {
this.parentValues.push(item);
this.parentSingleValue = item;
}
}
父模板:
<h1>Simply:</h1>
<app-child (onItemSelected)="itemSelected($event)"></app-child>
Single value: {{parentSingleValue}}<br>
<div *ngFor="let value of parentValues">
<p>{{value}}</p>
</div>
既不與plunkr也不是你選擇的parentSingleValue當單擊該子項被更新。這就是我想要做的。 – Korgen
你在哪裏更新? – Aravind