【发布时间】:2021-10-31 02:07:03
【问题描述】:
假设一个服务有一个主题,你想从一个组件中动态设置它的值。
A.service.ts:
//ChartTools: zoom?: boolean, pan?: boolean
public ChartConfig$: BehaviorSubject<ChartTools> = new BehaviorSubject(this.defaultValues);
public changeChartConfig(config: ChartTools):void{
const currentValues = this.ptChartToolsConfig$.value;
this.ptChartToolsConfig$.next({
...currentValues,
pan: config.pan,
zoom: config.zoom
})
}
现在在组件A中,我们想通过一个函数来动态设置这个主题:
A.component.html:
<mat-checkbox
value="zoom"
[checked]= "ToolsConfig$.zoom"
(change) = changeChartConfig($event.value, $event.source._checked)
>
A.component.ts
ngOnInit():void{
private ToolsConfig$ = this.A_Service.ChartConfig$.subscribe();
}
//cTask['constant']= "zoom" | "pan"
changeChartConfig(component: cTask['constant'], checked: boolean):void{
this.A_Service.changeChartConfig({
component : checked
})
}
但是,甚至没有使用 changeChartConfig() 中的输入“组件”,我得到了错误:
Argument of type '{ component: boolean; }' is not assignable to parameter of type 'ChartTools'.
Object literal may only specify known properties, and 'component' does not exist in type 'ChartTools'.
我理解是说ChartTools接口中不存在“组件”,但是ChartTools中存在组件的值,我想使用它们。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: javascript angular typescript dynamic angular-material