2
結合,我想創建一個使用自身遞歸基於jsonschema創造各種輸入角度分量親子遞歸雙向的角2.0
你可以看到完整的代碼here
我知道,創建雙向數據綁定我們可以使用ngModel,但我不知道如何在自定義組件中使用它。
結合,我想創建一個使用自身遞歸基於jsonschema創造各種輸入角度分量親子遞歸雙向的角2.0
你可以看到完整的代碼here
我知道,創建雙向數據綁定我們可以使用ngModel,但我不知道如何在自定義組件中使用它。
您還可以利用@Input
和@Output
如下所述:
@Component({
selector: 'custom',
template: `
<div>
{{value}} - <span (click)="updateValue()">Update</span>
</div>
`
})
export class CustomComponent {
@Input()
value:string;
@Output()
valueChange:EventEmitter;
constructor() {
this.valueChange = new EventEmitter();
}
updateValue() {
this.valueChange.emit('other value');
}
}
這樣你綁定到自定義組件的值的情況下將充分利用雙向綁定。當updateValue
是所謂的自定義組件,相應的屬性(這裏someProperty
)也將被更新父組件:
@Component({
(...)
template: `
<custom [(value)]="someProperty"></custom>
`,
directives: [ CustomComponent ]
})
export class MyComponent {
someProperty:string;
constructor() {
this.someProperty = 'test';
}
}
下面是相應的plunkr:https://plnkr.co/edit/ubtMXpGefgybGK4A3Pho?p=preview。
我認爲有很多代碼可以做這麼簡單的事情。沒有更好的方法嗎?寫一堆@Output和updateThis,更新每個雙向有界屬性的方法都不是很好,你不覺得嗎? – user1685095
實際上,我描述了爲組件定義雙向綁定的方式。這適用於所有對象類型甚至原始類型。 Angular2的方法是爲組件定義一個明確的「契約」:它們接受什麼作爲參數(輸入)以及它們可以觸發(輸出)什麼。也就是說,你可以隨時提供一個參數和參考工作。這允許不必定義/處理'EventEmitter's,但這對原始類型不起作用... –
您能否提供「提供參數並以參考方式工作」的示例?另外,我已經改變了我的代碼,並按照您的建議通過輸入和輸出實現了雙向綁定。現在,雖然我可以看到遞歸元素中實體的變化,但我無法在AppComponent中看到它們 – user1685095