相关疑难解决方法(0)

Angular ngOnInit中的异步/等待

我目前正在评估替换Angular的优点的利弊。RxJS” Observable与普通的Promise,这样我可以使用asyncawait并获得更直观的代码风格。

我们的典型场景之一:在中加载一些数据ngOnInit。使用Observables,我们可以:

ngOnInit () {
  this.service.getData().subscribe(data => {
    this.data = this.modifyMyData(data);
  });
}
Run Code Online (Sandbox Code Playgroud)

当我改为返回Promisefrom getData(),并使用async和时await,它变为:

async ngOnInit () {
  const data = await this.service.getData();
  this.data = this.modifyMyData(data);
}
Run Code Online (Sandbox Code Playgroud)

现在,很明显,Angular不会“知道”,而ngOnInit变成了async。我觉得这不是问题:我的应用仍然可以像以前一样工作。但是,当我查看OnInit接口时,显然并未以暗示可以声明该函数的方式声明该函数async

ngOnInit(): void;
Run Code Online (Sandbox Code Playgroud)

所以-底线:我在这里做什么合理吗?还是会遇到任何无法预料的问题?

asynchronous promise observable typescript angular

12
推荐指数
5
解决办法
2895
查看次数

我是否可以仅在使用Angular2 Universal的客户端中运行组件方法?

我正在写一个angular2通用应用程序.它有一个d3图表,但我希望只在客户端(浏览器)呈现d3图表而不是尝试在服务器上呈现它.angular2 universal中是否有一个接口只能在客户端运行组件方法?

class ComponentWithChart implements OnInit, ngUniversalBrowser {

  elem;

  constructor( private viewContainerRef:ViewContainerRef) {}

  ngUniversalBrowserOnInit() {

    this.elem = this.viewContainerRef.element.nativeElement;

    d3.select(this.elem).append('div').style({
      'background-color':'yellow'
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有类似上面的示例可能只允许我ngUniversalBrowser在浏览器中运行该方法OnInit

javascript d3.js angular2-universal angular

10
推荐指数
2
解决办法
686
查看次数

如何解决 XMLHttpRequest.send 处的 ERROR NetworkError (...dist\fxcore\server\main.js:200768:19)

我是 Angular 的新手。我刚刚完成了我的 Angular Web 应用程序的开发。当我在生产过程中使用 ng serve 为我的应用程序提供服务时,一切正常。我添加了角度通用。现在,当我运行 npm run dev:ssr 或 npm run build:ssr && npm run serve:ssr 时,我的应用程序将拒绝打开,并在控制台中抛出 NetworkError 响应。我注意到这个错误发生在通过类'constructors(){..}'发送的http请求的次数。我浏览了几个解决方案,但无法了解我做错了什么。我的后端是用 nodejs 和 express 开发的。我会很感激我能得到的任何帮助。这是我总是在控制台中得到的错误响应的完整示例。

ERROR NetworkError
    at XMLHttpRequest.send (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:200768:19)
    at Observable._subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:19025:17)
    at Observable._trySubscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186304:25)
    at Observable.subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186290:22)
    at scheduleTask (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:105897:32)
    at Observable._subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:105959:13)
    at Observable._trySubscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186304:25)
    at Observable.subscribe (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:186290:22)
    at subscribeToResult (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:196385:23)
    at MergeMapSubscriber._innerSub (C:\Users\MRBEN\Desktop\Angular\fxcore\dist\fxcore\server\main.js:191575:116)```
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest node.js angular angular9

6
推荐指数
3
解决办法
3785
查看次数

在角度通用中使用isBrowser函数时出错

我正在尝试在角度通用中使用isBrowser函数,但是当我构建时我仍然遇到相同的错误.我确实安装了angular-universal的npm包

npm i angular2-universal --save

'ng build -prod -aot'

 ERROR in Illegal state: symbol without members expected, but got {"filePath":"C:/dir/universal/website/node_modules/@angular/platform-browser/platform-browser.d.ts","name":"__platform_browser_private__","members":["BROWSER_SANITIZATION_PROVIDERS"]}.

    ERROR in ./src/main.ts
    Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'C:/dir/universal/website\src'
     @ ./src/main.ts 4:0-74
     @ multi ./src/main.ts
Run Code Online (Sandbox Code Playgroud)

这是我的app.module.ts:

//modules
import { HomeModule } from './home/home.module';
import { IntakeFormulierModule } from './intake-formulier/intake-formulier.module';
import { BrowserModule } from '@angular/platform-browser';
import { UniversalModule } from 'angular2-universal/browser';

import { NgModule } from '@angular/core';

//routing
import { routing } from "./app.routing";

//pages
import { …
Run Code Online (Sandbox Code Playgroud)

angular-universal

2
推荐指数
1
解决办法
2568
查看次数

如何验证服务器端的浏览器是否没有窗口引用?

我正在开发将 SSR 与 Angular Universal 集成的 Angular 应用程序。在这个项目中,我们使用一些步进器的插件(bs-stepper)。问题是这个插件有一个多窗口引用,如下所示:

var matches = window.Element.prototype.matches;
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来验证它是否是浏览器,尝试了“检测”和“导航器”等多个选项。

javascript server-side-rendering angular-universal angular

2
推荐指数
1
解决办法
4083
查看次数