如何使用DOCUMENT for public-api导出Angular 10 Guard

发光盒

我有一个有警卫的Angular 10库。我想导出防护以在使用应用程序的路由器上使用。我走了在我的出口守卫的道路,public-api.ts但我收到一个Document无法解决类型的生成错误我正在加注DOCUMENT我的警卫。下面的错误和保护代码。有出口建议吗?

生成错误:

Metadata collected contains an error that will be reported at runtime: Could not resolve type Document.
  {"__symbolic":"error","message":"Could not resolve type","line":19,"character":40,"context":{"typeName":"Document"}}

守卫:

import { Inject, Injectable, OnDestroy } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { Router, CanActivate } from '@angular/router';
import { Subscription } from 'rxjs';
import { QrRedirectService } from './qr-redirect.service';
import { MobileOS, QrUser } from '../qr-lib.model';
import { QR_LIB_CONFIG } from '../qr-lib.config.token';
import { QrLibConfig } from '../qr-lib.config';
@Injectable()
export class QrRedirectGuard implements CanActivate, OnDestroy {
  config: QrLibConfig;
  qrUser: QrUser;
  redirectUrl: string;
  redirectSubscription: Subscription;
  constructor(
    @Inject(QR_LIB_CONFIG) qrLibConfig,
    @Inject(DOCUMENT) private document: Document,
    public qrRedirectService: QrRedirectService,
    public router: Router,
  ) {
    if (qrLibConfig) {
      this.config = qrLibConfig;
    }
    (this.redirectSubscription = this.qrRedirectService
      .getQrUser()
      .subscribe((user: QrUser) => {
        this.qrUser = user;
      })),
      // tslint:disable-next-line: no-unused-expression
      (error: any) => {
        console.error(error);
      };
  }
  ngOnDestroy(): void {
    this.redirectSubscription.unsubscribe();
  }
  /**
   * The `Window` object from `Document` defaultView.
   */
  get window(): Window {
    return this.document.defaultView || window;
  }
  /**
   * Redirects instantly to the external link without the mediation of the router.
   */
  public redirect(url: string): Promise<boolean> {
    return new Promise<boolean>((resolve, reject) => {
      try {
        resolve(!!this.window.open(url));
      } catch (e) {
        reject(e);
      }
    });
  }
  /**
   * Returns `true` if user is on Android device.
   */
  isAndroid(osName: string): boolean {
    return osName === MobileOS.Android;
  }
  /**
   * Returns `true` if user is on iOS device.
   */
  isIOS(osName: string): boolean {
    return osName === MobileOS.iOS;
  }
  /**
   * Returns `false` if `QrUser` and `os` are valid, redirects to app store,
   * and directs the router to stop navigation.
   * Returns `true` if `QrUser` or `os` is invalid which directs the router
   * to continue with navigation.
   */
  canActivate(): boolean {
    if (this.qrUser && this.qrUser.os) {
      if (this.isAndroid(this.qrUser.os)) {
        this.redirectUrl = this.config.androidStoreUrl;
      }
      if (this.isIOS(this.qrUser.os)) {
        this.redirectUrl = this.config.iosStoreUrl;
      }
      if (this.redirectUrl) {
        // Jumps to the external url
        this.redirect(this.redirectUrl).then(() => false);
      }
    }
    // default route (qr landing page)
    return true;
  }
}
约阿希姆

更改@Inject(DOCUMENT) private document: Document@Inject(DOCUMENT) private document: any应该可以建立您的lib。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确实施Angular Guard?

来自分类Dev

将API Guard与Laravel结合使用

来自分类Dev

使用guard和guard / phpunit插件

来自分类Dev

最佳实践使用带有Angular Promise的if Guard语句

来自分类Dev

使用 Observables 时,Angular Guard 的导航不起作用

来自分类Dev

如何使用rspec测试assm Guard错误?

来自分类Dev

在Rails中使用Guard :: LiveReload

来自分类Dev

在Rails中使用Guard :: LiveReload

来自分类Dev

Laravel 5.2.29使用Auth :: guard('one'),Auth :: guard('two')的multiauth

来自分类Dev

使用平面图并使用Angular 8和Guard进行点击

来自分类Dev

如何在Angular canActivate Guard中从父路由重定向到子路由?

来自分类Dev

如何获取已传递到Angular的canDeactivate Guard中的通用组件属性?

来自分类Dev

Angularfire Auth Guard和Angular材料无法一起使用

来自分类Dev

Angular Universal:使用NgRx在服务器端的Guard中存储

来自分类Dev

使用Angular Route Guard时:'Observable <true | undefined>'不能分配给类型>'Observable <boolean>'

来自分类Dev

没有使用 ASP.NET Core Angular Spa 项目 JavaScriptServices 提供 Guard

来自分类Dev

使用异步方法进行验证时,是否可以从 Angular 的 Guard 中重定向?

来自分类Dev

SugarCRM v10 API的导出方法

来自分类Dev

Win32 GUARD内存:如何使用PAGE_GUARD实现堆栈

来自分类Dev

使用Guard-Zeus时,如何解决来自Guard的失真输出?

来自分类Dev

在密码重置路径上实施Angular Guard

来自分类Dev

Angular Guard仅允许以前访问的路线

来自分类Dev

Canload Guard Angular2 +中的配置

来自分类Dev

可以轻松破解Angular Guard或Firebase Auth

来自分类Dev

可以轻松破解Angular Guard或Firebase Auth

来自分类Dev

Angular Route Guard 在提供时抛出 ZoneAwareError

来自分类Dev

Angular Auth Guard 安全路由

来自分类Dev

如何扩展Laravel的Auth Guard类?

来自分类Dev

TypeScript:如何键入Guard Union类型

Related 相关文章

  1. 1

    如何正确实施Angular Guard?

  2. 2

    将API Guard与Laravel结合使用

  3. 3

    使用guard和guard / phpunit插件

  4. 4

    最佳实践使用带有Angular Promise的if Guard语句

  5. 5

    使用 Observables 时,Angular Guard 的导航不起作用

  6. 6

    如何使用rspec测试assm Guard错误?

  7. 7

    在Rails中使用Guard :: LiveReload

  8. 8

    在Rails中使用Guard :: LiveReload

  9. 9

    Laravel 5.2.29使用Auth :: guard('one'),Auth :: guard('two')的multiauth

  10. 10

    使用平面图并使用Angular 8和Guard进行点击

  11. 11

    如何在Angular canActivate Guard中从父路由重定向到子路由?

  12. 12

    如何获取已传递到Angular的canDeactivate Guard中的通用组件属性?

  13. 13

    Angularfire Auth Guard和Angular材料无法一起使用

  14. 14

    Angular Universal:使用NgRx在服务器端的Guard中存储

  15. 15

    使用Angular Route Guard时:'Observable <true | undefined>'不能分配给类型>'Observable <boolean>'

  16. 16

    没有使用 ASP.NET Core Angular Spa 项目 JavaScriptServices 提供 Guard

  17. 17

    使用异步方法进行验证时,是否可以从 Angular 的 Guard 中重定向?

  18. 18

    SugarCRM v10 API的导出方法

  19. 19

    Win32 GUARD内存:如何使用PAGE_GUARD实现堆栈

  20. 20

    使用Guard-Zeus时,如何解决来自Guard的失真输出?

  21. 21

    在密码重置路径上实施Angular Guard

  22. 22

    Angular Guard仅允许以前访问的路线

  23. 23

    Canload Guard Angular2 +中的配置

  24. 24

    可以轻松破解Angular Guard或Firebase Auth

  25. 25

    可以轻松破解Angular Guard或Firebase Auth

  26. 26

    Angular Route Guard 在提供时抛出 ZoneAwareError

  27. 27

    Angular Auth Guard 安全路由

  28. 28

    如何扩展Laravel的Auth Guard类?

  29. 29

    TypeScript:如何键入Guard Union类型

热门标签

归档