typescript - Angular2: JsonObject som @Input-verdi


Angular2: 2.0.0-beta8

Jeg vil gjerne tilpasse en direktiv. For å oppnå det opprettet jeg et objekt som inneholder alle mine egendefinerte parametere, og jeg håpet å sende det til malen min på denne måten:

Min direktiv brukt i en mal:

<div my-directive="{param1: 46, param2: 48}"></div>

Inndata i min direktiv:

@Input('my-directive')
public conf: Configuration;

Param Objektdefinisjon:

export interface Configuration{param1;param2; ...}

Dessverre fungerer det ikke. Kanskje på grunn av en Json-parsing?

  • Hvordan få det til å fungere?
  • Bør jeg måtte lage dette "Param Object" på komponenten min, og sende det til malen ved å bruke en variabel?
  • Finnes det noen beste praksis?

Svar #1

Hvis du vil tilordne et objekt, bruk syntaksen [propName]="value"

[my-directive]="{param1: 46, param2: 48}"

Dette er standard attributtbinding der Angular ikke er involvert.

<div my-directive="{param1: 46, param2: 48}"></div>

Attributter kan kun inneholde strenger. @Input() leser verdien fra attributtet etter at det ble gjort om til en streng.

Tips: For input-, output- og direktivenavn er myDirective foretrukket fremfor my-directive. Bare elementnavn bruker my-element for kompatibilitet med tilpassede elementer.

Relaterte artikler