2016-07-26 3 views
2

Мой класс, как это:Как использовать статический метод класса или настраиваемую функцию в шаблоне?

export class Image { 
    static getUrl(x: Image) { 
     return CONFIG.host + x.url 
    } 

    constructor(private url: string, public alt: string) {} 
} 

Мой шаблон как:

<img [src]="Image.getUrl(image)" [alt]="image.alt" > 

Мой компонент, как:

export class MyComponent { 
    image: Image; 
    Image = Image; 
} 

На данный момент я должен пройти сам класс Image вручную к компоненту, в порядке использования Image.getUrl. Каков стандартный способ использования пользовательской функции или метода класса в шаблоне?

Если я использую методы экземпляра, то, если я получаю Json, который содержит свойство, выглядит как Image, я должен сделать правильный тип приведения перед вызовом метода, что не очень удобно, если оно находится в вложенном json.

+0

Почему определение метода должно быть таким? Это имеет гораздо большее значение, чтобы сделать его методом экземпляра без параметров и просто вызвать метод в экземпляре, используя URL-адрес экземпляра. –

+0

Вы также можете просто выполнить 'get url() {}'. Таким образом, вы можете просто получить к нему доступ, как обычное свойство. 'image.url' –

+1

@peeskillet Поскольку, если я добавляю метод экземпляра, он больше не совместим с объектами, подобными json. – colinfang

ответ

3

Насколько я знаю, нет способа ссылаться на глобальные переменные/классы внутри шаблона. Масштаб шаблона находится внутри его хостингового компонента.

Либо вы делаете его нестатическим геттером класса Image, либо определяете настраиваемый канал, который поможет вам с преобразованием Image в imageUrl.