如何将订阅的数据绑定到const部分

时间:2019-05-14 11:48:08

标签: angular observable subscribe

我有三个组件,当单击rule-grid.component.ts中的添加按钮时,它会将一些数据(如C#中的会话)通过数据共享传送到另一个组件ruleparam-add-model.component.ts。 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                        
                )
            };
    }

问题出在RuleId的ruleparam-add-model.component.ts-> onAdd()->绑定附近,该值的值是从另一个组件接收的。

有没有更好的方法而不使用@Input和@Output将数据从一个组件传输到另一组件(这里我需要将ID发送到另一组件)

1 个答案:

答案 0 :(得分:0)

好的,我得到了答案。

方法1:使用单独的DataService,它在C#中作为会话工作(无常规)。

方法2:

public siteCreateModel:BehaviorSubject<RuleId>= new BehaviourSubject<RuleId>(null);