При выполнении двусторонней привязки данных с ngModel соответствующий синтаксис:
[(ngModel)]="name"
Интерполяция не требуется для имени переменной.
Обновление: 1. Если компоненты имеют отношения родитель / потомок, как в вашем случае, вы можете обмениваться данными между ними через декораторы @Input () и @Output ().
Обмен данными от родительского к дочернему с помощью @Input ():
<h3>Parent Component</h3>
<label>Parent Component</label>c
<input type="number" [(ngModel)]='parentValue'/>
<p>Value of child component is: </p>
<app-child [value]='parentValue'></app-child>
А в дочернем компоненте 'parentValue' можно получить как:
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
@Input() value: number;
constructor() { }
ngOnInit() {
}
}
Теперь, в случае отправки данных от Child to Parent, мы можем использовать @Output ( ) эмиттер событий. Таким образом, у родителя будет функция для получения данных от потомка как:
parent-app.component.html
<app-child [value]="parentValue" (childEvent)="childEvent($event)"></app-child>
parent-app.component.ts
childEvent(event) {
console.log(event);
}
And, the child.component.ts would look like :
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
@Input() PData: number;
@Output() childEvent = new EventEmitter();
constructor() { }
onChange(value) {
this.childEvent.emit(value);
}
ngOnInit() {
}
}