为什么Angular会切断字符串?

时间:2018-11-28 11:58:38

标签: angular

我有一个自定义组件,可以指定一个版本。组件的版本号为[major.minor.index]形式,并作为输入参数传递给组件,名称为[version]。

在组件中,将参数显式设置为字符串,以确保我们不会丢失版本号的[.index]部分(这是有意的),但是,当我们显示附带的版本号时,从调用组件中,版本号的[.index]部分被切除:

  • 预期为“ 1.1.9”
  • 实际“ 1.1”

我在这里错过了什么吗?不知道为什么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

1 个答案:

答案 0 :(得分:0)

在阅读了有关此问题的内容后,发现@Florian在其评论中是正确的。

如果未用字符串文字符号[version] =“'1.1.9'”包裹,Angular会将包含句点的值解释为数值,这就是[version] =“ 1.1.9”的原因导致1.1,因为一个数值不能包含多个句点。

在不同的语言环境中,该行为甚至更奇怪,其中数字/小数用逗号(,)表示。

要在Angular中表示与此类似的内容,请将字符串作为变量传递给组件,或者使用字符串文字表示法作为经验法则。