Расширить директиву Angular2
Я пытаюсь расширить пакет angular2-clipboard npm. Мне нужно получить доступ к его ngOnInit()
Функция и переопределить его в соответствии с конкретным вариантом использования для копирования.
Я новичок в angular2 и не знаю, как это сделать, то, как я пробовал это до сих пор, связано с указателем ниже. У меня возникли трудности, так как пакет экспортируется как модуль с именем ClipboardModule, и мне нужна директива.
Вот плагин GitHub и Plunker для справки:
- Github: https://github.com/maxisam/angular2-clipboard
- Файл, который показывает экспорт, src / clipboard.module.ts
- Их github также имеет ссылку на пример работы плунжера.
- Мой плункер: 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)()
,...