я предполагаю, что вы хотите связывание данных между родителем и ребенком, когда изменение ребенком message
, родитель получит обновленное значение.
это демо:
app.ts
//our root app component
import {Component, NgModule,OnInit,OnChanges} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import {Test} from './test';
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}} from parent</h2>
<test [(message)]="name"></test>
</div>
`,
})
export class App implements OnInit,OnChanges{
name:string;
constructor() {
console.log('==constructor==')
this.name = 'Angular2'
}
ngOnInit(){
// this.myService.someMethod()
console.log('==ngOnInit==')
}
ngOnChanges() {
console.log('onChange fired');
}
}
@NgModule({
imports: [ BrowserModule,FormsModule ],
declarations: [ App ,Test],
bootstrap: [ App ]
})
export class AppModule {}
test.ts
import { Component, NgModule,OnInit,OnChanges,Input, Output, EventEmitter } from '@angular/core'
@Component({
selector: 'test',
template: `
<div>
{{message}}
<input type="text" [ngModel]= "message" (ngModelChange)="onModelChange($event)"/>
</div>
`,
})
export class Test implements OnInit,OnChanges{
name:string;
@Input() message;
@Output() messageChange = new EventEmitter('');
constructor() {
console.log('==constructor==')
this.name = 'Angular2'
}
ngOnInit(){
// this.myService.someMethod()
console.log('==ngOnInit==')
}
ngOnChanges() {
console.log('onChange fired');
}
onModelChange(event) {
this.message = event;
this.messageChange.emit(this.message);
}
}
демо: https://plnkr.co/edit/nU9Qkuf7bwgSga7Ce2Wc?p=preview
это обычай двухсторонняя связывание в угловом.
<test [(message)]="name"></test>
эквивалент:
<test [message]="name"(messageChange)="message = $event"></test>
messageChange
, где это событие от детского компонента.
Фактически это ** ** уволен в моей консоли. В чем проблема? – smnbbrv
ngOnИзменяет только огонь при изменении ссылки @Input –
он не стреляет? этот посыльный не отображается onChange уволен – user944513