2016-06-24 13 views
0

Eine gemeinsam genutzte Modellvariable hat ein Format, das mit einer Unterkomponente nicht kompatibel ist, jede Idee, wie ich mit der Konvertierung umgehen soll, ohne mein Anwendungsmodell zu verwirren.Gemeinsam genutzte Modellvariable in inkompatiblem Format

import {Calendar} from 'primeng/primeng'; 

@Component({ 
    selector: 'foo', 
    directives: [Calendar], 
    template: ` 
    ... 
    <p-calendar [(ngModel)]="model"></p-calendar> 
    ... 
`}) 
class FooComponent { 
    // input format: "1970-01-01T00:00:00Z" 
    // model is shared within the app 
    // should stay in this format 
    // Calendar doesn't support this format 
    @Input() model; 


} 

Antwort

0

Ich löste mich in einer Weise, die ich nicht wirklich mag, eine bessere Lösung ist willkommen Danke.

@Pipe({ 
    name: 'iso2date' 
}) 
export class Iso2Date { 
    transform(value: any, args: Array<any>): string { 
     return moment(value).format("YYYY-MM-DD"); 
    } 
} 

@Component({ 
    selector: 'foo', 
    directives: [Calendar], 
    pipes: [Iso2Date], 
    template: ` 
    ... 
    <p-calendar dateFormat="yy-mm-dd" 
     [ngModel]="model | iso2date" 
     (ngModelChange)="model=date2iso($event)"></p-calendar> 
    ... 
`}) 
class FooComponent { 
    @Input() model; 

    date2iso(value) { 
     var m = moment(value, "YYYY-MM-DD"); 
     return m.toISOString(); 
    } 

} 

P. S .: Rohre funktionieren nicht anders in Aktionen die folgenden wäre sauberer gewesen

@Pipe({ 
    name: 'date2iso' 
}) 
export class Date2Iso { 
    transform(value: any, args: Array<any>): string { 
     return moment(value,"YYYY-MM-DD").toISOString(); 
    } 
} 

... 
(ngModelChange)="model=(event | date2iso)"></p-calendar> 
... 

jedoch bekomme ich folgende Fehlermeldung:

Parser Error: Cannot have a pipe in an action expression at column 20 in [model=($event | date2iso)] in [email protected]:28 ("="yy-mm-dd" 
          [ngModel]="model | iso2date" 
          [ERROR ->](ngModelChange)="model=($event | date2iso)" 
Verwandte Themen