Angular 6 Universal 不等待解析器完成

2024-01-01

我刚刚安装了 Angular Universal 启动套件版本6并在其中创建了我的组件。该组件应在加载时通​​过 API 获取用户信息并将其显示以供查看。

问题是 API 结果显示在浏览器中,但未显示在“查看源代码”。什么叫普惠如此?!

My getUserscommponent code:

@Component({
  selector: 'app-get-users',
  templateUrl: './get-users.component.html',
  styleUrls: ['./get-users.component.css'],
  providers: [HttpClient]
})
export class SportFixturesComponent implements OnInit {
  ngOnInit() {
    this.route.params.subscribe(params => {
        this.route.data.subscribe( data =>{
            if (data) {
                this.usersList = data;
            }else{
                this.usersList = [];
            }
        })          
    });
  }
}

In the app.module.ts codes:

import { getUserscommponent } from './get-users-component';
import { getUsersResolver } from './get-users-resolver';

@NgModule({
  declarations: [
    AppComponent,
    getUserscommponent
  ],
  imports: [
    BrowserModule.withServerTransition({appId: 'my-app'}),
    RouterModule.forRoot([
      { path: '', component: HomeComponent, pathMatch: 'full'},
      { 
        path: 'get-users', 
        component: SportFixturesComponent ,
        resolve  : {fxResolvedList:getUsersResolver} ,
        pathMatch: 'full'
      }
    ]),
    TransferHttpCacheModule,
    HttpModule,
    HttpClientModule
  ],
  providers: [getUsersResolver],
  bootstrap: [AppComponent]
})
export class AppModule { }

In the get-users-resolver codes:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ActivatedRoute , Router , Resolve , ActivatedRouteSnapshot , RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';

@Injectable()
export class getUsersResolver implements Resolve<any>{

    constructor(private router: Router,private route: ActivatedRoute,private httpClient:HttpClient){}

    resolve(route: ActivatedRouteSnapshot , state: RouterStateSnapshot): Observable<any>|Promise<any>|any {
        interface fxInterface{
            status   : boolean ,
            users : any
        }
        return this.httpClient.post("/api/get-users" , {} , {})
    }
}

当我查看例如的来源时About Us I see:

<router-outlet></router-outlet>
  <app-about-view>
    <h3>About Us text... </h3>
  </app-about-view>
</app-root>

但是当我查看源代码时我获取用户组件 see:

<router-outlet></router-outlet></app-root>

即使没有

你能帮我解决这个问题吗?

Edited:

经过一些编辑后,现在我收到此错误:

    ERROR { Error: Uncaught (in promise): Error
    at resolvePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:813:31)
    at resolvePromise (webpack:///./node_modules/zone.js/dist/zone-node.js?:770:17)
    at eval (webpack:///./node_modules/zone.js/dist/zone-node.js?:872:17)
    at ZoneDelegate.invokeTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:420:31)
    at Object.onInvokeTask (webpack:///./node_modules/@angular/core/fesm5/core.js?:3934:33)
    at ZoneDelegate.invokeTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:419:36)
    at Zone.runTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:187:47)
    at drainMicroTaskQueue (webpack:///./node_modules/zone.js/dist/zone-node.js?:594:35)
    at ZoneTask.invokeTask (webpack:///./node_modules/zone.js/dist/zone-node.js?:499:21)
    at Server.ZoneTask.invoke (webpack:///./node_modules/zone.js/dist/zone-node.js?:484:48)
    at emitTwo (events.js:126:13)
    at Server.emit (events.js:214:7)
    at parserOnIncoming (_http_server.js:619:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:115:23)
  rejection: [Error],
  promise: ZoneAwarePromise { __zone_symbol__state: 0, __zone_symbol__value: [Error] },
  zone:
   Zone {
     _properties: { isAngularZone: true },
     _parent:
      Zone {
        _properties: {},
        _parent: null,
        _name: '<root>',
        _zoneDelegate: [Object] },
     _name: 'angular',
     _zoneDelegate:
      ZoneDelegate {
        _taskCounts: [Object],
        zone: [Circular],
        _parentDelegate: [Object],
        _forkZS: null,
        _forkDlgt: null,
        _forkCurrZone: [Object],
        _interceptZS: null,
        _interceptDlgt: null,
        _interceptCurrZone: [Object],
        _invokeZS: [Object],
        _invokeDlgt: [Object],
        _invokeCurrZone: [Circular],
        _handleErrorZS: [Object],
        _handleErrorDlgt: [Object],
        _handleErrorCurrZone: [Circular],
        _scheduleTaskZS: [Object],
        _scheduleTaskDlgt: [Object],
        _scheduleTaskCurrZone: [Circular],
        _invokeTaskZS: [Object],
        _invokeTaskDlgt: [Object],
        _invokeTaskCurrZone: [Circular],
        _cancelTaskZS: [Object],
        _cancelTaskDlgt: [Object],
        _cancelTaskCurrZone: [Circular],
        _hasTaskZS: [Object],
        _hasTaskDlgt: [Object],
        _hasTaskDlgtOwner: [Circular],
        _hasTaskCurrZone: [Circular] } },
  task:
   ZoneTask {
     _zone:
      Zone {
        _properties: [Object],
        _parent: [Object],
        _name: 'angular',
        _zoneDelegate: [Object] },
     runCount: 0,
     _zoneDelegates: null,
     _state: 'notScheduled',
     type: 'microTask',
     source: 'Promise.then',
     data: ZoneAwarePromise { __zone_symbol__state: 0, __zone_symbol__value: [Error] },
     scheduleFn: undefined,
     cancelFn: null,
     callback: [Function],
     invoke: [Function] } }

就我而言,我通过添加检查浏览器是否解析返回来修复它,例如:

// resolver.ts
import { Injectable, PLATFORM_ID, Inject } from '@angular/core';
import { isPlatformBrowser, isPlatformServer } from '@angular/common';
...
...
export class ContentResolverService implements Resolve<Observable<any>> {
    constructor(
        @Inject(PLATFORM_ID) private platformId: Object
        private http: HttpClient,
        ) {}

    resolve() {
        return isPlatformBrowser(this.platformId) ? this.http.get('some-url') : null;
    }
}

...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 6 Universal 不等待解析器完成 的相关文章

随机推荐

  • 在 DART 中创建泛型类型的实例

    我想知道是否可以在 Dart 中创建泛型类型的实例 在 Java 等其他语言中 您可以使用反射来解决这个问题 但我不确定这在 Dart 中是否可行 我有这门课 class GenericController
  • Pandas 不会就地 fillna()

    我正在尝试在数据框中的 4 个特定列 字符串 对象类型 上用 填充 NA 我可以在 fillna 时将这些列分配给新变量 但是当我 fillna 就位时 基础数据不会改变 a n6 a n6 PROV LAST PROV FIRST PRO
  • 如何找出真实屏幕刷新率(不是四舍五入的数字)

    根据微软的这篇文章 http support microsoft com kb 2006076 en us用户设置的屏幕刷新率可以 并且大部分是 小数 用户设置为 59Hz 但屏幕按照屏幕显示 60Hz 运行 但实际上是 59 94Hz 我
  • 我可以放慢 Django 的速度吗

    确实很简单的问题 manage py runserver 我可以慢下来吗localhost 8000在我的开发机器上 以便我可以模拟文件上传并处理 ajax 上传的外观和感觉 取决于你想模拟的地方 这样你就可以简单地睡觉吗 from tim
  • Android 异步任务一个接一个

    我有一个现有的代码 其中有一个用于某些请求响应的异步任务 在执行后方法中 它将解析的数据设置到某个数据库中 现在我需要修改此代码 以便在应用程序启动时 数据被一一下载 即我需要执行任务 A 然后在其完全完成后 即使数据已设置 我需要启动任务
  • int.TryParse = null 如果不是数字?

    如果无法将字符串解析为 int 是否有某种方法返回 null with public string categoryID int TryParse categoryID out categoryID 获取 无法从 out string 转换
  • for循环到底是如何工作的[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是一个非常简单的 for 循环 for int i 0 i lt 100 i System out println i 我知道它主要
  • WP All Import Pro:Polylang 兼容性

    我正在尝试使用 WP All Import 的专业版将数据从 Excel 工作表导入到 WordPress 中 我们使用 Polylang 来支持多语言 我想知道如何管理将内容导入正确的语言版本 我发现有一个隐藏的分类 语言 我可以手动将其
  • iPhone:协处理器偏移超出范围

    我在 xcode 和 iphone 上遇到了一个奇怪的编译问题 我的游戏即将完成 但现在我突然遇到这个编译错误 standard input 6108 co processor offset out of range gcc 4 2 fai
  • 使用 iOS 11 中增加的导航栏标题

    iOS 11 Beta 1 几乎所有系统应用程序都使用了增加的导航栏标题 它开始在 iOS 10 和音乐应用程序中这样做 我想知道 Apple 是否在 iOS 11 中为此提供了公共 API 或者目前是否会保持私有状态 行为是标题的字体大小
  • 创建带有限制的 XSD 可选小数元素

    我已经成功地使用以下方法创建了一个可选的小数元素
  • HandlerThread 中的 NullPointerException

    这个错误让我困惑了几个小时 我正在得到空指针异常 问题是这个错误不一致 当我启动应用程序时会发生这种情况 但只是偶尔 所以我不确定是什么原因造成的 对于错误日志中的冗长问题 我深表歉意 但我找不到其他询问方式 错误日志如下 FATAL EX
  • 查找某个表的数据来源-ORACLE

    这可能是一个微不足道的问题 但是 由于我正在处理很久以前由其他人创建的数据库 没有包含适当的文档或注释 所以我遇到了一个关键问题 我需要知道数据如何插入到某个表中 有没有脚本或者其他方法可以识别数据源 换句话说 我需要知道数据是否是通过某些
  • 仅允许视频嵌入代码 (Rails)

    我想知道是否有人知道一种方法 只允许将来自 youtube vimeo blip tv 等的代码嵌入到表单字段中 我的网站上有一个表单 允许用户嵌入视频 但我只希望他们添加嵌入代码 html 而不添加任何其他危险的内容 例如 JS 或其他
  • 使用 node-inspector 调试 karma-jasmine 测试

    几乎同样的问题使用 node inspector 调试 jasmine node 测试 https stackoverflow com questions 6162920 debugging jasmine node tests with
  • Xcode 11 beta 无法将应用程序上传到 TestFlight

    我正在尝试将我的应用程序分发到 TestFlight 目前我的应用程序需要 iOS 13 以及 NFC 访问 在 iOS 13 结束测试版之前 我不打算发布我的应用程序 但我希望我的 QA 团队能够对其进行测试 我可以从 Xcode 11
  • 多个图表延迟问题,SVG 还是 HTML5 Canvas?

    我正在寻找使用 Javascript 构建动态且交互式的多个图表 在此练习中涉及同时移动 平移多个图表 我已经使用 SVG 和各种图表库实现了这个练习 然而 我发现当我开始拥有超过 12 个图表时 平移渲染变得缓慢 Highcharts 库
  • 在 C# 中,Array.ToArray() 是否执行深度复制?

    这应该是一个非常基本的问题 但我在找到明确的答案时遇到了一些困难 当你有一个值数组并使用 ToArray 方法 它创建数组的深副本还是浅副本 No 您可以通过编写一个小程序进行测试来轻松验证这一点
  • PHP 警告: include(/var/www/html/....../lib/Cake/Error/ErrorHandler.php): 无法打开流错误

    我在尝试加载网页时遇到此错误 错误消息中显示的路径是 PHP 警告 包括 var www html test com www products abc lib Cake Error ErrorHandler php 无法打开流 它无法找到
  • Angular 6 Universal 不等待解析器完成

    我刚刚安装了 Angular Universal 启动套件版本6并在其中创建了我的组件 该组件应在加载时通 过 API 获取用户信息并将其显示以供查看 问题是 API 结果显示在浏览器中 但未显示在 查看源代码 什么叫普惠如此 My get