Переименование угловых директив, таких как *ngFor или пользовательские директивы

#angular

Вопрос:

Мы работаем над расширением JS framework, которое дополняет Angular. Мы разрабатываем наш собственный набор компонентов и API, который в большей степени зависит от метаданных. Идея состоит в том, чтобы построить наш код API таким образом, чтобы уменьшить зависимость кода, переписанного непосредственно в Angular, чтобы проблема обратной совместимости при обновлении была менее серьезной.

Поэтому я не хочу напрямую использовать конкретные директивы Angular в коде, например: «*ngFor», а вместо этого использовать что-то вроде «*для».

Возможно ли это вообще? могу ли я изменить страницу директивы в файле конфигурации? или я могу написать свои собственные директивы, которые работают аналогично угловым?

Ответ №1:

Да, это возможно. Вы можете создавать свои собственные директивы, которые могут расширять основные директивы.

Например, для того, чтобы использовать *for директиву вместо *ngFor вы можете использовать что-то вроде:

 import { Directive, NgIterable, Input } from '@angular/core';
import { NgForOf } from '@angular/common';

@Directive({
  selector: '[for][forOf]'
})
export class ForDirective<T, U extends NgIterable<T> = NgIterable<T>> 
    extends NgForOf<T, U> {
  @Input()
  set forOf(ngForOf: Uamp;NgIterable<T>|undefined|null) {
    this.ngForOf = ngForOf;
  }
}
 

затем в шаблоне вы можете свободно писать:

 <div *for="let item of [1,2,3]">{{ item }}</div> 
 

Пример запуска Ng