我有两个组件看起来像这样:
父组件
@Component({
template: '',
providers: [
{ provide: PARENT_COMPONENT, useExisting: forwardRef(() => ParentComponent) }
]
})
export class ParentComponent { }
子组件
@Component({
template: ''
})
export class MyComponent {
constructor(
@Inject(PARENT_COMPONENT) private readonly parentComponent: ParentComponent
){}
}
注入令牌:
export const PARENT_COMPONENT = new InjectionToken<ParentComponent>('ParentComponentToken');
在子组件中,当我执行这样的导入时:
import type { ParentComponent } from '../parent.component';
我的单元测试全部中断并抛出以下错误:
<块引用>ReferenceError: ParentComponent 未定义
但是,我的故事书可以正常工作,组件也可以正常工作。
如果我通过删除 type
来更改导入,它看起来像这样:
import { ParentComponent } from '../parent.component';
然后故事书不起作用,但单元测试起作用。为什么这会给我带来问题?我该如何解决?
如果我将构造函数更改为使用 any
而不是 ParentComponent
,单元测试和故事书都可以工作。但是,我真的不想这样做,因为代码不是强类型的。