在 Angular 中的字符串中声明一个变量

Declare a variable inside a string in Angular

我正在使用 Angular,在 i18n 文件夹下,我有多个 json 文件,例如这个文件,用于不同的语言。我正在寻找一种在字符串中使用“目标”变量的动态方法。

  {
      "title": "Connection,
      "targets": {
        "facebook": "Facebook",
        "instagram": "Instagram",
        "linkedin": "LinkedIn",
      },
      "message-success": "You connected successfully!",
      "message-failure": "You're connection failed",
      "failure-title": "Why did the connection to (here I want to use one of the targets, something like {{target}}) failed?"
    }

然后显示在html.

 <div [hidden]="!error">
    <[ngClass]="'-background-grey-4 spacing padded'">{{'failure-title'}}</p-text>      
  </div>

假设我正确理解了你的问题,你可以利用 translate 管道来使用 属性 并动态传递一个值来替换 {{target}}.

<div [hidden]="!error">
  <p-text [ngClass]="'-background-grey-4 spacing padded'">
    {{ "failure-title" | translate : { target: yourValue } }}
  </p-text>      
</div>

如果我没理解错的话,您可以尝试将 JSON 字符串放入对象中,然后访问组件中的对象属性。 然后,您可以访问执行 objName.targets

的属性

要将 JSON 转换为广告对象,请使用 JSON.parse(yourText)。

在执行此操作之前,在同一文件夹或共享文件夹(例如 target.model.ts)中创建一个模型(class 来定义对象)。

定义对象:

export class connectionStatus { constructor(public title: string, etc...) }

定义对象的所有属性。它们必须与您从文件中读取的相匹配。

解析 JSON:

let connectionStatusLocale: {
    title: string,
    targets: {facebook: 'Facebook', etc...},
    etc...
  } = JSON.parse(string);   //where string is the text you have read from a file

  this.conectionStatus = connectionStatusLocale;

在转换字符串时,在解析之前定义类型以避免错误。