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

How to bind the subscribed data into the const part

我有三个组件,当单击 rule-grid.component.ts 中的添加按钮时,它会将一些数据(如 C# 中的会话)通过 data- 传送到另一个组件 ruleparam-add-model.component.ts share.ts。在这里,我在 ruleparam-add-model.component.ts

的订阅部分有问题

数据-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的更好的方法,将数据从一个组件传输到另一个组件(这里我需要将Id发送到另一个组件)

好的,我得到答案了。

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

方法二:

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