我们习惯于制作变量protected
这些变量仅用于组件及其子类,而不用于模板。
如果您的类中有 10 个变量,并且使用protected
private
和public
,则很容易知道模板中使用了哪些变量,那么这尤其是一个优势。
@Input() public disablePlus: boolean = false;
@Input() public disableMinus: boolean = false;
@Input() protected jumpSize: number = 1000;
现在我要为此组件创建一些单元测试。但是我无法在我的it
方法中主动更改这些值:
it('should change jumpSize to 5000', () => {
component.jumpSize= 5000;
// ts2445: Property `jumpSize` is protected and only accessible within class and its subclasses
...
});
it('plus should be disabled', () => {
component.disablePlus= true; // no error
...
});
有没有办法将 jumpSize 保留protected
还是我们必须将其更改为public
?
还是您认为我们对protected @Input
领域的方法无论如何都是愚蠢的,不是很有用?
我很感激任何建议。
我从未见过任何这样的例子(在input
上使用protected
(。
事实上,它们应该是公开的,因为顾名思义,input
应该从类外部更新。您是否在应用程序上使用 AOT?如果真的编译,我什至感到惊讶。
从您的角度来看,这将是您在测试中更新属性时遇到的相同问题。如果您处于开发模式,则它使用JIT
(实时编译(,并且您不会从模板中获得此类检查。这就是为什么它可能有效。
结论:把你所有的input
都放在public
。