2016-11-09 7 views
1

У меня есть очень простой классНевозможно вызвать функцию на элемент внутри ngFor Angular2

export class Foo { 

    name: string; 

    index: number; 

    toFullString(): string { 
     return `${this.name} | ${this.index}`; 
    } 
} 

И это мой ngFor:

<div *ngFor="let foo of foos"> 
    {{foo.toFullString()}}; 
</div> 

И что я получаю то, что метод не существует в консоль:.

self.context $ implicit.toFullString не является функцией

Я не могу понять, что здесь не так. foo.name отлично работает и выводит все элементы. Я полагаю, что способ машинописного текста добавляет методы к объекту, испорченному этим для углового 2, но не может понять, что делать.

+0

Что вы итерацию? Где определяются ваши «foos» (множественное число)? – Meir

+0

Теперь, когда вы спросили, я понял, в чем проблема. Я создаю этот объект в качестве роли с веб-сервера. Тогда они явно отлично подходят для машинописных текстов, но это не настоящий «класс». Эта вещь получила меня много раз уже :(Тип безопасности для Typcript иногда шутит. –

ответ

4

Я предполагаю, что вы не новичок в классе, а выполняете литье или преобразование.

Вы должны сделать new Foo(nameParam, indexParam) с соответствующим конструктором, принимая имя и индекс constructor(public name, public index) { this.name = name; this.index = index; }

+0

Да, я уже получил это :) Взял новый вопрос, если здесь можно сделать лучше: http://stackoverflow.com/questions/40511093/how-to-get-the-proper-class-in-a-cast-from-json-in-typescript –

+0

Я думаю, я не буду удалять этот вопрос только ради кого-то, у кого есть проблемы с типом типа безопасности и принять ваш ответ. –

+1

Это не имеет никакого отношения к тиксовому «типу безопасности», это единственная проблема JavaScript, у которой нет системы типов. – rinukkusu