Angular 4: невозможно создать объект компонента - PullRequest
0 голосов
/ 05 ноября 2018

Я использую сторонний компонент, который отвечает за загрузку файлов. Я импортирую этот компонент в свой компонент, как показано ниже, но проблема в том, что я никогда не захожу в цикл if. Кто-нибудь может подсказать мне, как создать объект UploadComp?

import { UploadComp } from com.package.folder;

export class showUpload {
    @ViewChild (UploadComp) uploadCompObj: UploadComp;


constructor(){
    if(this.uploadCompObj){     //I am never going inside this if
        this.uploadCompObj.popup = true;
    }
} }

Компонент выгрузки представлен ниже:

export declare class UploadComp implements Oninit{
    popup: boolean;
    overlay: boolean;
    fileName: string;
    errorMsg: any[];
}

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Используйте жизненный цикл AfterViewInit () и используйте условие if

import { UploadComp } from com.package.folder;

        export class showUpload {
            @ViewChild (UploadComp) uploadCompObj: UploadComp;
        }

        constructor(){}
        ngAfterViewInit() {
           if(this.uploadCompObj){     //I am never going inside this if
                this.uploadCompObj.popup = true;
            }
        }
       }
0 голосов
/ 05 ноября 2018

@ViewChild() не является частью класса импорта компонента, это часть получения дочернего компонента от вашего component.html

У меня есть пара изменений для вас, если он отлично работает, используйте его

Удалите ваш @ViewChild() из класса компонента, и ваш код должен выглядеть так -

uploadCompObj: UploadComp = {
    popup: true,
    overlay: true,
    fileName: null,
    errorMsg: null
};

Затем вам нужно удалить declare из класса компонента, который вы пытаетесь импортировать - я не уверен, почему вы использовали объявление, но просто экспортируя класс компонента, вы можете создать объект, если это не ошибка, пожалуйста, не удаляйте это

Теперь, наконец, вы можете установить значение для ваших свойств как в constructor, так и в onInit(), но лучше всего изменить значение в вашей onInit() попытке доступа к нему - надеюсь, что это сработает

Спасибо - Счастливого кодирования !!

0 голосов
/ 05 ноября 2018

Я думаю, что вы должны использовать угловой крюк жизненного цикла. Конструктор вызывается до того, как угловые успокоятся. Так что используйте ngOnInit

ngOnInit(){
    if(this.uploadCompObj){      
        this.uploadCompObj.popup = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...