угловой реализовать мой собственный компост с ngModel - PullRequest
0 голосов
/ 16 декабря 2018

Я получил следующий HTML-код и хочу синхронизировать myModel при каждом изменении input или my-component.

<input type="text" [(ngModel)]="myModel" />
<my-component [(ngModel)]="myMdoel></my-component>

Есть идеи?

РЕДАКТИРОВАТЬ:

<div *ngFor="let item of items">
    <input type="text" name="item{{item.name}}" [(ngModel)]="item.name" />
    <my-component [(model)]="item.name" [datasource]="source"></my-component>
</div>

Мой компонент

<button type="button" *ngFor="let s of datasource" (click)="selectItem(s)">{{s}}</button>

export class MyComponent ... {
    _model: any;

    @Input()
    get model(): any {
        return this._model;
    }

    @Input()
    set model(value: any) {
        this._model = vaue;
    }

    @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();

    @Input() datasource: any[];

    ...

    selectItem(item: any): void {
        this._model = item;
        this.modelChange.emit(this._model);
    }
}

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете просто использовать переменную в своем компоненте и использовать генератор событий @Input следующим образом

<my-component [myModelVar]="myMdoel></my-component>

и в вашем my-componentnet.ts

@input myModelVar;

здесь myModelVar будет иметь изменения при обновлении myModel на родительском компоненте

...