Как связать подписанные данные в константную часть - PullRequest
0 голосов
/ 14 мая 2019

У меня есть три компонента, при нажатии на кнопку добавления в 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 для передачи данных из одного компонента в другой компонент (здесь мне нужно отправить идентификатор в другой компонент)

1 Ответ

0 голосов
/ 18 мая 2019

Хорошо, здесь я получил ответ.

Подход 1: использование отдельного DataService, который работает как сессия в C # (не условно).

Подход 2:

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