I\'m working on an Angular project (Angular 4.0.0) and I\'m having trouble binding a property of an abstract class to ngModel because I first need to cast it as the concrete
As mentioned, using a barebone method call will have performance impact.
A better approach is to use a pipe, and you have best of both worlds. Just define a Cast pipe:
@Pipe({
name: 'cast',
pure: true
})
export class CastPipe implements PipeTransform {
constructor() {
}
transform(value: any, args?: any): Event {
return value;
}
}
and then in your template, use event | cast
when you need the cast.
That way, change detection stays efficient, and typing is safe (given the requested type change is sound of course).
Unfortunately, I don't see a way to have this generic because of the name
attribute, so you'd have to define a new pipe for each type.