私のAngular 4アプリケーションでは、文字列入力を受け取るコンポーネントがあります:
<app-my-component [myInput]="'some string value'"></app-my-component>
場合によっては、文字列内に変数を渡す必要があります。次に例を示します。
<app-my-component [myInput]="'My name is ' + name + '!'"></app-my-component>
es6テンプレートリテラル (別名template stringsまたはバックティック文字列):
<app-my-component [myInput]="`My name is ${name}!`"></app-my-component>
しかし、それは動作しません:
不明なエラー:テンプレート解析エラー:パーサーエラー:予期しないトークンレクサーエラー:式の列1に予期しない文字[`]
それを達成する正しい方法は何ですか?
ES6テンプレートリテラル(テンプレート文字列) Angularコンポーネント入力内では使用できません。これは、 Angularコンパイラ がこの文法を認識しないためです。
この方法で問題ありません。
<app-my-component [myInput]="'My name is ' + name + '!'"></app-my-component>
またはこのようなもの、
コンポーネントでは、
// In the component, you can use ES6 template literal
name: string;
input: string;
ngOnInit() {
this.name = 'some name;
this.input = `My name is ${this.name}!`;
}
HTMLでは、
<app-my-component [myInput]="input"></app-my-component>
属性値で角度の補間構文を引き続き使用できます。
myInput="My name is {{ name }}!"
あなたが書くのはあなた次第ですが、残念ながらバックティックは式のバインディングでは許可されていません。