angular - Angular2-direktiv - strängproblem


Vi skapade en direktiv i Angular2 och har en input-egenskap som ska ta emot en string. Problemet är att vi inte kan skicka en sträng.

Om vi försöker göra detta:

<learning-requirements [title]="You should be able to!" [content]="requirements"></learning-requirements>

Det fungerar inte, så vi måste göra så här, och sedan fungerar det:

<learning-requirements [title]="'You should be able to!'" [content]="requirements"></learning-requirements>

Det är vår direktiv:

@Component({
    selector: "learning-requirements",
    directives: [IONIC_DIRECTIVES],
    templateUrl: "build/pages/learning/components/requirements/requirements.html"
})
export class RequirementsComponent {
    @Input() public title: string;
    @Input("content") public items: Array<Requirement>;
}

Någon idé om hur man hanterar sträng utan att uttryckligen använda enkelcitat?

Svar #1

I princip, när du har ett attribut omslutet med [] hakparenteser kommer attributvärdet (uttrycket) att utvärderas med komponentens kontext (this).

Eftersom du skickar ett värde direkt kan du direkt ange title-attributet utan []-hakparenteser, vilket betyder att värdet du har skickat in i attributet inte kommer att utvärderas mot komponentens kontext (this).

Markup

<learning-requirements 
  title="You should be able to!" 
  [content]="requirements">
</learning-requirements>

Svar #2

Deklarera en sträng(Type)-variabel och använd den som visas nedan,

<learning-requirements [title]="someVar" [content]="requirements"></learning-requirements>


export class AppComponent{
  someVar:string="You should be able to!";
}