Расширить директиву Angular2

Я пытаюсь расширить пакет angular2-clipboard npm. Мне нужно получить доступ к его ngOnInit() Функция и переопределить его в соответствии с конкретным вариантом использования для копирования.

Я новичок в angular2 и не знаю, как это сделать, то, как я пробовал это до сих пор, связано с указателем ниже. У меня возникли трудности, так как пакет экспортируется как модуль с именем ClipboardModule, и мне нужна директива.

Вот плагин GitHub и Plunker для справки:

  1. Github: https://github.com/maxisam/angular2-clipboard
    • Файл, который показывает экспорт, src / clipboard.module.ts
    • Их github также имеет ссылку на пример работы плунжера.
  2. Мой плункер: https://embed.plnkr.co/sIxmFo/

1 ответ

Так определяется сервис, а не директива.

@Injectable()
export default class CopyDirective extends ClipboardModule {
        public cm: any; // better way than any?

    constructor(cm: ClipboardModule) {
        super();
        this.cm = cm;
    }
}

Директива требует @Directive() декоратор вместо @Injectable()

Наследование с компонентами, директивами и каналами в настоящее время не поддерживается.

Я также не понимаю, почему вы расширяете модуль, когда хотите расширить директиву. Вам нужно расширить класс директивы напрямую.

Смотрите также https://github.com/angular/angular/issues/11606

Некоторые сценарии могут работать, хотя. Обычно вам нужно повторить все декораторы в подклассе.

@Component(), @Directive(), @Input(), @Output(), @ViewChild(ren)(), @ContentChild(ren)(),...

Другие вопросы по тегам