我有三个组件,当单击rule-grid.component.ts中的添加按钮时,它会将一些数据(如C#中的会话)通过数据共享传送到另一个组件ruleparam-add-model.component.ts。 ts。在这里,我在ruleparam-add-model.component.ts的订阅部分遇到了问题
export class DataService {
//binding the data
subject: Subject<any> = new Subject<any>();
//get the binded data
observable: Observable<any> = this.subject.asObservable();
constructor() { }
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发送到另一组件)
答案 0 :(得分:0)
好的,我得到了答案。
方法1:使用单独的DataService,它在C#中作为会话工作(无常规)。
方法2:
public siteCreateModel:BehaviorSubject<RuleId>= new BehaviourSubject<RuleId>(null);