Angular自定义双向数据绑定

counter.component.ts

import { Component, Input, forwardRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';

export const EXE_COUNTER_VALUE_ACCESSOR: any = {
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(() => CounterComponent),
    multi: true
};

@Component({
    selector: 'exe-counter',
    template: `
    

当前值: {{ count }}

`, providers: [EXE_COUNTER_VALUE_ACCESSOR] }) export class CounterComponent implements ControlValueAccessor { @Input() _count: number = 0; get count() { return this._count; } set count(value: number) { this._count = value; this.propagateChange(this._count); } propagateChange = (_: any) => { }; writeValue(value: any) { if (value) { this.count = value; } } registerOnChange(fn: any) { this.propagateChange = fn; } registerOnTouched(fn: any) { } increment() { this.count++; } }

设置数据双向绑定 - 使用 [(ngModel)] 语法

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'exe-app',
  template: `

    

outerCounterValue value: {{outerCounterValue}}

{{ form.value | json }}
`, }) export class AppComponent { outerCounterValue: number = 5; }

 

你可能感兴趣的:(angular)