【发布时间】:2020-03-02 09:33:30
【问题描述】:
如何将所有 Formgroup 数据作为 Angular 中的服务发送到另一个组件?我正在寻找 ControlValueAccessor 的替代品。所以任何时候有人在表单上写东西,接收者都会得到值数据。
尝试编辑下面的代码以使其正常工作。
地址发件人表单:
export class AddressFormComponent implements OnInit {
editAddressForm: FormGroup;
constructor(private formBuilder: FormBuilder) {
this.editAddressForm = this.formBuilder.group({
'streetName' : [null, Validators.required, Validators.maxLength(64)],
'city' : [null, Validators.required, Validators.maxLength(32)],
'state' : [null, Validators.required, Validators.maxLength(16)],
'postalCode' : [null, Validators.required, Validators.maxLength(16)]
});
}
ngOnInit() {
}
// What should I write as Event Code??
}
服务:
export class AddressService {
private messageSource = new Subject();
currentMessage = this.messageSource.asObservable();
constructor() { }
changeMessage(currentMessage) {
this.messageSource.next(currentMessage);
}
}
接收者:
export class AddressCombinedReceiverComponent implements OnInit {
message: any;
constructor(private readonly addressService: AddressService) {
this.addressService.currentMessage.subscribe(currentMessage => this.message = currentMessage);
}
ngOnInit() {
}
}
【问题讨论】:
-
你尝试过响应式 valueChanges observable 来捕捉价值变化吗? angular.io/api/forms/AbstractControl#valueChanges