Начать угловой процесс рендеринга приложения из JavaScript - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть угловое приложение, которое я включу в другое приложение (вид компонента). Но я хочу начать процесс рендеринга угловых приложений при определенных обстоятельствах, скажем, нажатием кнопки. это означает, что угловой элемент DOM не визуализируется с самого начала, но после определенных действий, нажмите кнопку, чтобы упростить, я создам элемент, а затем я хочу запустить угловое приложение.

Я придумал грязный подход, который я использовал для реагирующих приложений, и я добавляю функцию, которая живет в приложении, в объект окна, а затем вызываю ее всякий раз, когда мне нужно, например:

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule
    ],
    entryComponents:[
        AppComponent
    ],
    providers: []
})
export class AppModule {

    _app: ApplicationRef

    constructor() {
        window['LoadAngularApp'] = this.loadAngularApp.bind(this);
    }

    ngDoBootstrap(app: ApplicationRef) {
        this._app = app;
    }

    loadAngularApp() {
        this._app.bootstrap(AppComponent);
    }
}

в HTML что-то вроде:

<button type="button" onclick="myFunction()">Load!!!</button> 
<script>
    function myFunction() {
        var body = document.getElementsByTagName("body")[0];
        var app = document.createElement("app-root");
        body.appendChild(app);
        window.LoadAngularApp();
    }
</script>

Это работает, но может быть взломано.

Предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...