Estoy aprendiendo Angular 2 y encontré algunas cosas nuevas. Usé la extensión ScratchJS del navegador Chrome para aprender TypeScript. Mientras hacía eso, esto es lo que hice para una cadena de acento grave (`):
let user='user'; let msg=`Welcome ${user}! I can write multi-line string. This is awesome! `; console.log(msg);Como puede ver, así es como se usa la variable usuario en la cadena. Pero cuando hago lo mismo en un proyecto Angular 2, es un poco diferente (y hacer cosas como las anteriores generará un error). Para mi proyecto ficticio de Angular 2, hice un componente simple:
import { Component} from '@angular/core'; @Component({ selector: 'app-user', template: ` Hi, {{user}} I can write multi-line string. This is awesome! `, styles: [] }) export class UserComponent { user:string='John Doe'; constructor() { } }Esto funciona. Pero aquí, estoy usando la interpolación de cadenas usando:
{{}}en vez de:
${}Y si uso eso, arrojará un error. Sé que entendí mal algunos hechos. Pero, ¿alguien puede explicar qué es?
{{ foo }} será manejado por el motor de plantillas de Angular , vinculando la propiedad foo definida en su clase.
${ bar } será manejado por la Javascript string interpolation , que, mientras se procesa, no tiene idea de cuál es la bar de propiedades de su objeto.
Esto es algo estrechamente relacionado con el funcionamiento de Angular , esto no está relacionado con typescript ni nada más. Todavía puede usar ${} si no está en su proyecto Angular o no está en la plantilla.
Por ejemplo, algo como esto debería funcionar, ya que la expresión se evalúa antes de ser devuelta y no depende del motor de plantilla:
public getUsername(): string { let username = 'test'; return `Hi ${username}`; }${} es una interpolación de cadena para mostrar un valor de cadena entre el código mecanografiado. Y {{}} es interpolación para mostrar el contenido en una plantilla HTML.