私は次のシナリオを持っている:角度2 - スーパーコンポーネントでモデルを更新しない@Input
ありPessoa
は、これらのいずれかがAdministrador
で所有し、いくつかのエンティティがあるので、私はPessoa
データをラップするためのコンポーネントを作成することにしましたCRUDフォームに@Input()
ディレクティブを使用して、PessoaFormComponent
の新しいプロパティにadministrador.pessoa
プロパティをバインドしました。
私の問題は、私はAdministradorComponent
フォームを送信する際PessoaFormComponent
のpessoa
プロパティの更新がAdministradorComponent
に反映されなかった場合のように、administrador.pessoa
プロパティは、nullのままであることです。
administrador.component.ts:
@Component({
...
templateUrl: './administrador.component.html',
directives: [... PessoaFormComponent, ...],
...
})
export class AdministradorComponent {
@ViewChild('pessoaForm')
pessoaFormComponent: PessoaFormComponent;
}
administrador.component.html:
...
<app-pessoa-form #pessoaForm [(pessoa)]="entidade.pessoa"></app-pessoa-form>
...
pessoa.form.component.ts:[(pessoa)]="entidade.pessoa"
この構文のために
@Component({
...
selector: 'app-pessoa-form',
templateUrl: './pessoa.form.component.html',
...
})
export class PessoaFormComponent implements AfterViewInit {
@Input()
pessoa: Pessoa;
private _tipoPessoa: String;
ngAfterViewInit() {
this._tipoPessoa= 'FISICA';
this.reiniciarPessoa();
}
private reiniciarPessoa() {
if (this._tipoPessoa === 'JURIDICA') {
this.pessoa = new PessoaJuridica();;
} else {
this.pessoa = new PessoaFisica();;
}
}
get tipoPessoa(): String {
return this._tipoPessoa;
}
set tipoPessoa(tipoPessoa: String) {
this._tipoPessoa = tipoPessoa;
this.reiniciarPessoa();
}
}
おかげで、使用して放出される必要があります –