Как реализовать Pendo в Angular 8+ - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь настроить Pendo в своем приложении Angular 8. Тем не менее, их документация, кажется, отключена. Примеры сценариев не соответствуют реальным сценариям, которые мне даны в моей панели управления для Pendo. Кроме того, их переходам на YouTube 4 года, и похоже, что они были написаны для Angular JS.

Я следовал документации, расположенной по адресу https://support.pendo.io/hc/en-us/articles/360031862272-Installation-for-Single-Page-Frameworks

Я поместил первую часть моего скрипта на индексную страницу. html страницу непосредственно перед закрывающим тегом <body>.

Затем я поместил pendo.initialize в свой компонент авторизации. .

Однако это не сработало. Я получаю ОШИБКА TypeError: "pendo.initialize (...) не является функцией" в консоли браузера.

Поэтому я связался со службой поддержки, и они предложили мне запустить pendo.initialize за пределами Angular с помощью ngZone.

Так вот, где я закончил.

index. html

...
    <script>
        (function (apiKey) {
            (function (p, e, n, d, o) {
                var v, w, x, y, z; o = p[d] = p[d] || {}; o._q = [];
                v = ['initialize', 'identify', 'updateOptions', 'pageLoad']; for (w = 0, x = v.length; w < x; ++w)(function (m) {
                    o[m] = o[m] || function () { o._q[m === v[0] ? 'unshift' : 'push']([m].concat([].slice.call(arguments, 0))); };
                })(v[w]);
                y = e.createElement(n); y.async = !0; y.src = 'https://cdn.pendo.io/agent/static/' + apiKey + '/pendo.js';
                z = e.getElementsByTagName(n)[0]; z.parentNode.insertBefore(y, z);
            })(window, document, 'script', 'pendo');
        })('xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
    </script>

</body>

В моем компоненте входа в систему

declare let pendo: any;
...
constructor(        
        private ngZone: NgZone
    ) {
...
}
...
private onAuthorizationResultComplete(authorizationResult: AuthorizationResult) {

        if (authorizationResult.authorizationState === AuthorizationState.unauthorized) {
            ...
        } else {
            this.httpClient.post(this.apiUrl, {}).subscribe(r => {
                this.ngZone.runOutsideAngular(function () {
                    pendo.initialize({
                        visitor: {
                            id: 'VISITOR-UNIQUE-ID-test'
                        },
                        account: {
                            id: 'ACCOUNT-UNIQUE-ID-test'
                        }
                    })('xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
                });

                this.router.navigate(['/dashboard']);
            });

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