我有一个自定义组件,可以指定一个版本。组件的版本号为[major.minor.index]形式,并作为输入参数传递给组件,名称为[version]。
在组件中,将参数显式设置为字符串,以确保我们不会丢失版本号的[.index]部分(这是有意的),但是,当我们显示附带的版本号时,从调用组件中,版本号的[.index]部分被切除:
我在这里错过了什么吗?不知道为什么Angular会自己这样做?
// Calling component
<custom-component
[version]="1.1.9">
</custom-component>
// Custom component
// omitted for brevity
@Input() version: string = '1.1.8';
private env = environment;
constructor() {
}
get setVersion(): string {
let version = this.version;
if (!('yamlLocation' in this.env)) {
version = '1.1.8'; // TODO: pull this from YAML file
}
return version;
}
// omitted for brevity
答案 0 :(得分:0)
在阅读了有关此问题的内容后,发现@Florian在其评论中是正确的。
如果未用字符串文字符号[version] =“'1.1.9'”包裹,Angular会将包含句点的值解释为数值,这就是[version] =“ 1.1.9”的原因导致1.1,因为一个数值不能包含多个句点。
在不同的语言环境中,该行为甚至更奇怪,其中数字/小数用逗号(,)表示。
要在Angular中表示与此类似的内容,请将字符串作为变量传递给组件,或者使用字符串文字表示法作为经验法则。