Расширение Angular 2 ngModel директива для использования наблюдаемых

Angular 2 ngModel-директива работает с переменными и функциями типа

<input [ngModel]="myVar" (ngModelChange)="myFunc($event)" />

Вместо переменных и функций я хотел бы использовать BehaviorSubjects вместо

<input [ngModel]="mySubject | async" (ngModelChange)="mySubject.next($event)" />

Есть ли способ расширить ngModel или использовать какой-то макрос, чтобы уменьшить повторение в моих шаблонах?

<input [myNewNgModel]="mySubject" />

Ответы

Ответ 1

Немного поздно вечеринке, но я считаю, что вас это заинтересовало:

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.less']
})
export class HomeComponent implements OnInit {
  model: Observable<number[]>;

  ngOnInit() {
    this.model = this.get();
  }

  get(): Observable<number[]> {
    return Observable.from([[1, 2, 3]]);
  }
}

@Component({
  selector: 'app-child',
  templateUrl: './child.component.html',
  styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
  @Input() numbers;
  constructor() { }

  ngOnInit() {
  }

}
<app-child [numbers]="(model | async)"></app-child>

<!-- child component -->
<h1 *ngFor="let i of numbers">{{i}}</h1>