У меня есть три компонента, при нажатии на кнопку добавления в rule-grid.component.ts он переносит некоторые данные (например, сеансы в C #) в другой компонент ruleparam-add-model.component.ts через общий доступ к данным.ц.Здесь у меня есть проблема в части подписки ruleparam-add-model.component.ts
data-share.ts
export class DataService {
//binding the data
subject: Subject<any> = new Subject<any>();
//get the binded data
observable: Observable<any> = this.subject.asObservable();
constructor() { }
ruleparam-add-model.component.ts
constructor(
private session: DataService ,
public dialogRef: MatDialogRef<RuleParameterAddComponent>,
private formBuilder: FormBuilder,
private ruleService: RuleParametersService) {
this.dialogRef.disableClose = true;
this.ruleParamAddFormGroup = this.formBuilder.group({
name: ['', [Validators.required]],
defaultValue:['1', [Validators.required]],
dataType:['', [Validators.required]],
});
}
onAdd() {
debugger;
if (this.ruleParamAddFormGroup.valid) {
const rule = this.ruleParamAddFormGroup.value;
console.log(JSON.stringify(rule));
const data = {
name: rule.name,
defaultValue:rule.defaultValue,
dataType:rule.dataType,
ruleId:+this.session.observable
.pipe(filter(Boolean),debounceTime(300))
.subscribe(
ruleId=>this.data.ruleId=ruleId
)
};
}
проблема близка к ruleparam-add-model.component.ts-> onAdd () -> привязка ruleId, значения которого поступают из другого компонента.
Есть ли лучший методбез использования @Input и @Output для передачи данных из одного компонента в другой компонент (здесь мне нужно отправить идентификатор в другой компонент)