javascript - 将对象引用传递给要在 ngModel 中使用的 Angular2 组件

标签 javascript angular typescript data-binding

我有一个包含以下代码的组件:

<div class="form-group">
    <label for="title">Title</label>
    <input type="text" [(ngModel)]="model.title" name="title" required/>
</div>

我正在尝试将整个组件迁移到另一个组件中,input-component:

@Component({
    selector: 'input-component',
    template: `
        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" [(ngModel)]="value" name="title" required/>
        </div>
    `
})
export class InputComponent {
    @Input() value: string;
}

因此第一个示例代码将替换为:

<input-component [value]="model.title"></input-component>

model.title 更改时,HTML 元素内的值会更改,但是当我更改元素的内容时,model.title 不会更改。

如何使用此设置实现双向数据绑定(bind)?

最佳答案

我需要创建一个 EventEmitter 来执行此操作:

@Component({
    selector: 'input-component',
    template: `
        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" [ngModel]="value" (ngModelChange)="onInput($event)" name="title" required/>
        </div>
    `
})
export class InputComponent {
    @Input() value: string;
    @Output() valueChange = new EventEmitter();

    public onInput(event: string) {
        this.value = event;
        this.valueChange.emit(event);
    }
}

关于javascript - 将对象引用传递给要在 ngModel 中使用的 Angular2 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40319425/

相关文章:

javascript - 在 JavaScript 中,是否可以更改对象初始值设定项的构造函数?

javascript - Google 自动完成搜索栏默认值

javascript - html 元素不根据输入值更新

Angular 9 无法实例化循环依赖!应用程序引用

javascript - 如何更改时间格式?

javascript - 如何跨多个 svg 文件使用字体字形?

Angular 检索数据问题(Cannot read property 'uid' of null)

angular - 单击按钮 Angular 时如何更改组件

typescript - 如何使函数处理 (A | B)[] 和 A[] | 的返回值B[] 在 typescript 中等效

typescript - NativeScript 应用程序为 "Error-ReferenceError-ErrorEvent is not defined"