Я создаю директиву в Угловая 2 и в этой директиве мне нужно получить доступ к Component
. Для этого я использовал ViewChild
(этот подход работал в обычном компоненте, но он не работает в контексте директивыСсылка ViewChild content Angular2
Это моя директива:.
import {Component, ViewChild} from "@angular/core";
import {NavController, NavParams} from "ionic-angular";
import {IONIC_DIRECTIVES} from "ionic-angular";
import {ComponentBase} from "../../component.base";
@Component({
selector: "header-content",
directives: [IONIC_DIRECTIVES],
templateUrl: "build/pages/components/header-content/header.content.html"
})
export class HeaderContentComponent {
@ViewChild(Component) protected component;
constructor() {
console.log(this.component.type);
}
}
В console.log
я получаю следующее исключение:
EXCEPTION: TypeError: Cannot read property 'type' of undefined
Как я могу получить доступ к Component
из моей директивы?
EDIT :
К сожалению, я вставил здесь неправильный код, но все тот же вопрос.
Мне нужно получить Content
, а не Component
как упомянуто.
Так вот код. Content
до сих пор не определен:
import {Component, ViewChild} from "@angular/core";
import {NavController, NavParams, Content} from "ionic-angular";
import {IONIC_DIRECTIVES} from "ionic-angular";
import {ComponentBase} from "../../component.base";
@Component({
selector: "header-content",
directives: [IONIC_DIRECTIVES],
templateUrl: "build/pages/components/header-content/header.content.html"
})
export class HeaderContentComponent {
@ViewChild(Content) protected content: Content;
public toolbarActive: boolean = false;
public toggleToolbar() {
this.toolbarActive = !this.toolbarActive;
if (this.toolbarActive) {
// this.content.removeCssClass("no-scroll");
// this.content.addCssClass("scroll");
} else {
// this.content.removeCssClass("scroll");
// this.content.addCssClass("no-scroll");
}
// this.content.resize();
}
protected ngAfterViewInit() {
console.log(this.content);
}
}
EDIT:
Я создал Plunker с кодом, проверьте консоль и вы увидите неопределенного
https://plnkr.co/edit/ayFskPyDRlpYDkMEapDL?p=preview
EDIT:
После принятия ответа ниже (он работает на Plunker), но он не работает в моей Visual Studio. Я получаю следующее сообщение об ошибке:
Supplied parameters do not match any signature of call target
Новый Plunker: https://plnkr.co/edit/ayFskPyDRlpYDkMEapDL?p=preview
Wow! Я совершил большую ошибку. Это не «Компонент», который я пытаюсь получить, это «Контент». Я обновлю свой пост. – DAG
Проверьте этот плункер https://plnkr.co/edit/JTL0aMcnh748parhbbfj?p=preview Что здесь не так? – yurzui
этот плункер о компоненте. Я использую директиву. Я могу получить доступ к «Контент» из компонента, но не из директивы. – DAG