如何将订阅的数据绑定到 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);
我有三个组件,当单击 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);