小编use*_*686的帖子

Subject.next没有在ngOnInit中触发

有谁为什么这个代码(从主题初始化一个值)不起作用?有没有错误或设计?我究竟做错了什么?

TS

import { Component, OnInit } from '@angular/core';
import { Subject } from "rxjs";

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.styl']
})
export class AppComponent implements OnInit {
  itemSupplier$: Subject<any[]> = new Subject<any[]>();

  items: any[] = [
    {name: 'Item 1', value: 'item1'},
    {name: 'Item 2', value: 'item2'},
  ];

  ngOnInit(){
    this.itemSupplier$.next(this.items);
  }
}
Run Code Online (Sandbox Code Playgroud)

HTML

<ul>
    <li *ngFor="let item of itemSupplier$ | async">{{item.name}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

subject rxjs angular

8
推荐指数
1
解决办法
4527
查看次数

如何在 DevTools 中检查垃圾 Observables?

为了避免内存泄漏,我如何专门检查 Angular 应用程序是否存在垃圾 Observable(那些尚未取消订阅的对象)?

memory-leaks devtools rxjs angular

7
推荐指数
1
解决办法
4029
查看次数

Angular HttpClient为零响应返回null值

我已将Angular 4服务从旧的Http迁移到新的HttpClient.返回纯零0作为响应的请求正在返回一个observable null.

请求:

return this.httpClient.get(url, options)
  .do(res => console.log('service returns', res)) as Observable<number>;
Run Code Online (Sandbox Code Playgroud)

将控制台日志null,但当我在devtools>网络中打开该请求时,我看到服务器响应0.

我究竟做错了什么?

angular angular-httpclient

7
推荐指数
1
解决办法
3439
查看次数

IE11中未定义ClipboardEvent

我的Angular指令之一中包含以下代码:

  @HostListener('paste', ['$event'])
  onPaste($event: ClipboardEvent) {
    setTimeout(() => {
      const input = (<HTMLInputElement>$event.target);
      input.value = input.value.replace(/\D/g, '');
    });
  }
Run Code Online (Sandbox Code Playgroud)

它在IE11中失败,并显示错误消息ClipboardEvent is undefined。幸运的是,我可以将其键入到just Event,但是我想知道为什么它会中断-我可以在angular-cli.json中添加任何可使其使用的库ClipboardEvent吗?

"lib": [
  "es2017",
  "dom"
],
Run Code Online (Sandbox Code Playgroud)

“ dom”是Event从哪里来的...

events internet-explorer-11 angular

7
推荐指数
1
解决办法
864
查看次数

如何配置 VSCode 以提供 vitest 自动导入?

在 VSCode 中,我有一个非常小的项目,安装了 vite 和 vitest。使用 vitest,与 jasmine 或 jest 不同,您需要显式导入describeit等符号expect

不幸的是,VS Code 甚至不提供自动导入 ( cmd+ .):

按 cmd+ 后的 VSCode。

如果重要的话,我安装了 Vitest 扩展(VSCode 不是我的主要 IDE,所以我可能会丢失一些东西)。

如何配置我的环境以便轻松导入这些函数?

unit-testing visual-studio-code vitest

7
推荐指数
1
解决办法
1745
查看次数

在 TypeScript 中处理事件数据的类型

我正在尝试将 JavaScript 代码转换为 TypeScript (1.8.9),我想知道声明或转换附加到事件的数据的正确方法是什么。

self.onmessage = function(e: Event){
    if(e.data.schedules) processSchedules(e.data.schedules)
};
Run Code Online (Sandbox Code Playgroud)

data部分被 PHPStorm 标记为红色。我应该将其投射到某个接口还是any为了消除 TS 错误?

typescript

6
推荐指数
1
解决办法
6051
查看次数

如何调试 ngrx/store?

我遇到了 Angular 2 和 ngrx/store 的特定代码状态,我的应用程序完全中断(路由不工作,数据不出现,路由回到前一个,以及所有其他类型的可能的灾难),但我快用完了关于如何调试商店周围发生的事情的想法。redux dev-tools 是一个很棒的工具,但它似乎无法捕获错误。

.catch在我的选择器、效果和.subscribe()语句之前放置了语句,尝试了两种变体:

return state$.select(state => state.user)
  .map(user => user.collection)
  .catch((error, caught) => {
      console.log('error getCollection');
      return caught;
  });
Run Code Online (Sandbox Code Playgroud)

return state$.select(state => state.user)
  .map(user => user.collection)
  .catch((error) => {
      console.log('error getCollection');
      return Observable.throw(error);
  });
Run Code Online (Sandbox Code Playgroud)

控制台仍然保持沉默。我只是不相信除了商店之外不会有任何其他“单一的错误来源”。

此代码不会为我捕获错误。应该是?:

.do(() => {
    Observable.throw('fake error');
})
.catch(error => {
    console.error(error);
    return Observable.throw(error);
});
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何调试整个商店使用的可观察对象?

ngrx angular

6
推荐指数
1
解决办法
3757
查看次数

基于规则的节点创建:商业产品+产品显示节点集

我正在尝试将Commerce产品类型绑定到我自己的自定义类型节点(用作显示节点).目标是在尽可能少的地方输入新数据.因此,我正在探索基于规则的创建另一种类型的创建.似乎两个方向都有效.在这两者中,我更喜欢在用户创建自定义类型节点时自动创建Commerce产品,然后该节点将用作产品显示.

我想知道是否有人通过这个选择并且可以推荐这个.此外,commerce_product_display_manager模块是否必要?

content-type drupal drupal-7 drupal-commerce drupal-rules

5
推荐指数
1
解决办法
2642
查看次数

滑动在 Chrome 模拟模式下不起作用

我正在开发一个利用 ao Bootstrap carousel (3.0) 和touchSwipe plugin的应用程序。我想为触摸屏添加滑动功能以在幻灯片之间切换。我设法达到了在桌面模式下可以滑动的状态,但如果我在 chrome DevTools 中打开模拟模式,则无法滑动。Chrome 设置为以 --touch-events=enabled 标志开头,但它也没有帮助。

该页面已正确设置元视口。

对可能缺少什么有什么想法吗?

jquery touch swipe

5
推荐指数
0
解决办法
1283
查看次数

无法在我的angular-cli项目上运行ng lint

ng -v:1.0.0-beta.32.3

"devDependencies": {
    "@angular/compiler-cli": "2.4.4",
    "@types/jasmine": "^2.5.38",
    "@types/node": "^6.0.42",
    "codelyzer": "~2.0.0-beta.4",
    "jasmine-core": "^2.5.2",
    "jasmine-spec-reporter": "^3.2.0",
    "karma": "^1.4.1",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.1.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-remap-istanbul": "^0.6.0",
    "protractor": "^4.0.13",
    "ts-node": "~2.0.0",
    "tslint": "^4.4.2",
    "typescript": "~2.0.3"
  }
Run Code Online (Sandbox Code Playgroud)

/tslint.json

{
  "rulesDirectory": [
    "node_modules/codelyzer"
  ],
  "rules": {
    "class-name": true,
    "comment-format": [
      true,
      "check-space"
    ],
    "curly": true,
    "eofline": true,
    "forin": true,
    "indent": [
      true,
      "spaces"
    ],
    "label-position": true,
    "max-line-length": [
      false,
      140
    ],
    "member-access": false,
    "member-ordering": [
      true,
      "static-before-instance"
    ],
    "no-arg": true,
    "no-bitwise": true, …
Run Code Online (Sandbox Code Playgroud)

lint angular-cli angular

5
推荐指数
1
解决办法
5361
查看次数