我们习惯于使变量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
字段的方法是愚蠢的,不是很有用?
感谢您的任何建议。
答案 0 :(得分:1)
我从未见过任何示例(在protected
上使用input
)。
实际上,它们应该是公共的,因为正如名称本身所说,input
应该从类外部进行更新。您是否在应用程序上使用AOT?如果实际编译,我什至感到惊讶。
从您的角度来看,更新属性将是测试中遇到的相同问题。如果您处于开发人员模式,则它将使用JIT
(仅在及时编译时使用),并且不会从模板中获得这种检查。这就是为什么它可能起作用的原因。
结论:只需将所有input
个public
放进去。