标签: angular2-observables

无法加载资源:Safari 9.1.2中的Observable.js.map

我在Angular-cli的Angular 2决赛中使用了observable.

  • Angular 2.0.0决赛
  • angular-cli:1.0.0-beta.15
  • 节点:6.3.0
  • Mac os:el capitan

package.json中的依赖项:

"dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "bootstrap-sass": "^3.3.7",
    "chart.js": "^2.2.2",
    "core-js": "^2.4.1",
    "d3": "^4.2.3",
    "d3-tip": "^0.7.1",
    "ionicons": "^3.0.0",
    "moment": "^2.15.1",
    "rxjs": "5.0.0-beta.12",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.6.23"
  }
Run Code Online (Sandbox Code Playgroud)

我的应用程序在Safari 9.1.2以外的每个浏览器中都能正常工作 - 它会将此错误消息抛出到控制台:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:4200/Observable.js.map
Run Code Online (Sandbox Code Playgroud)

我试图在angular_cli.json中导入Rxjs:

"scripts": [
        "../node_modules/rxjs/Rx.js"
      ],
Run Code Online (Sandbox Code Playgroud)

另外,我试图将rxjs导入到app.module.ts和这样的工作组件:

import {Observable} from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)

但是继续得到同样的错误.

难道我做错了什么?很奇怪只有Safari遇到这个错误.

rxjs5 angular-cli angular2-observables angular

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

Angular 2单元测试可观察错误(HTTP)

我正在尝试为我的API服务编写单元测试,但在捕获HTTP错误时遇到一些问题.我遵循本指南以及Angular2文档,因为该指南在某些小范围内(稍微)过时了.

所有单元测试都与服务引发错误的单元测试分开(由于HTTP状态代码错误).我可以通过退出告诉我response.ok.从我所读到的,这与单元测试没有异步执行有关,因此,不等待错误响应.但是,我不知道为什么会出现这种情况,因为我async()beforeEach方法中使用了效用函数.

API服务

get(endpoint: string, authenticated: boolean = false): Observable<any> {
    endpoint = this.formatEndpoint(endpoint);
    return this.getHttp(authenticated) // Returns @angular/http or a wrapper for handling auth headers
        .get(endpoint)
        .map(res => this.extractData(res))
        .catch(err => this.handleError(err)); // Not in guide but should work as per docs
}
private extractData(res: Response): any {
    let body: any = res.json();
    return body || { };
}

private handleError(error: Response | any): Observable<any> {
    // TODO: Use a remote …
Run Code Online (Sandbox Code Playgroud)

unit-testing angular2-testing angular2-observables angular

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

使用observable时在angular 2异步验证器中返回什么

如果是,我必须在customerNameValidator中返回什么

异步验证失败/成功我的'customerName'FormControl无效?

this.customerForm = this.formBuilder.group({
customerName: 
[this.newCustomerName, [Validators.minLength(2), Validators.required],[this.customerNameValidator.bind(this)]]
});


customerNameValidator(c: AbstractControl)
{
   return this.service.customerExists(c.value,this.companyId).subscribe(response =>
   {
        if(response == true)
        {
             alert("true");
        }
        else
        {
            alert("false");
        }
   });
}
Run Code Online (Sandbox Code Playgroud)

angular2-forms angular2-observables angular

6
推荐指数
2
解决办法
9044
查看次数

BehaviorSubject初始值不能与share()一起使用

share()运算符应用于BehaviorSubject.BehaviorSubject具有初始值.

目标是创建单个共享订阅.但是,当BehaviorSubject具有初始值时,此共享订阅似乎不起作用.

获得意外结果.

代码如下所示:

let subject = new Rx.BehaviorSubject(0);
let published = subject
                  .do(v => console.log("side effect"))
                  .share();

published.subscribe((v) => console.log(v+" sub1"));
published.subscribe((v) => console.log(v+" sub2"));

subject.next(1);
Run Code Online (Sandbox Code Playgroud)

结果:

"side effect"
"0 sub1"
"side effect"
"1 sub1"
"1 sub2"
Run Code Online (Sandbox Code Playgroud)

预期结果:

"side effect"
"0 sub1"
"1 sub1"  <------------- this is missing from actual result
"side effect"
"1 sub1"
"1 sub2"
Run Code Online (Sandbox Code Playgroud)

rxjs rxjs5 angular2-observables

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

在异步调用中订阅Observable不起作用[Angular2]

我在service.ts中有一个方法getData(),如下所示.这将返回一个Observable.另一个服务ApiService也有一个方法get(),它也返回一个Observable.

    getData(args, parentKey?):any {
        return new Observable(observer => {
            this.apiService.get(args).subscribe(
                response => {
                    observer.next({
                        data: response['data'],
                        status: ($.isEmptyObject(response) ? false : true) 
                    });
                },
                error => console.log("error : ", error),
                () => console.log("finished")
            );
        });
    }
Run Code Online (Sandbox Code Playgroud)

我试图在我的组件的异步 API调用中重用此getData()方法.见下文:

this.myService.getData({
    url: 'apiUrl1',
    method: 'Method1',
    parameters: {}
}).subscribe(response => {
    if (response['status']) {
        console.log('Processed apiUrl1');
    }
});
this.myService.getData({
    url: 'apiUrl2',
    method: 'Method2',
    parameters: {}
}).subscribe(response => {
    if (response['status']) {
        console.log('Processed apiUrl2');
    }
});
this.myService.getData({ …
Run Code Online (Sandbox Code Playgroud)

typescript angular2-services angular2-observables

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

如何在Angular 2中设置从observable到变量的值

我有一个UsernameService返回包含json对象的observable.在AnotherService,我想从UsernameService对象中注入一个值.

到目前为止,我能够从UsernameService订阅observable,我可以在控制台中显示它.我甚至可以向下钻取并在控制台中显示对象中的一个值.但是,我不明白如何将该值赋给我可以使用的变量.相反,当我尝试将值赋给变量时,在控制台中我得到:订阅者{closed: false, _parent: null, _parents: null...etc

这是我在控制台中成功显示可观察值的示例:

import { UsernameService } from './username.service';
import { Injectable, OnInit } from '@angular/core';
import 'rxjs/Rx';

@Injectable()
export class AnotherService {

    username: any[] = [];

    constructor(private getUsernameService: UsernameService) { }

    someMethod() {
        let myFinalValue = this.getUsernameService.getUsername()
        .subscribe(username => console.log(username.data[0].AccountName));
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码导致控制台正确显示AccountName我试图分配给变量的字段的值myFinalValue.但是,我似乎无法弄清楚我哪里出错了.

当我尝试使用相同的技术来简单地获取值(而不是登录控制台)时,我得到了通用:订阅者{closed: false, _parent: null, _parents: null...等,正如我之前提到的.

以下是导致我的错误的代码示例:

import { UsernameService } from './username.service';
import { Injectable, OnInit } …
Run Code Online (Sandbox Code Playgroud)

typescript angular2-observables angular

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

Rxjs解析可观察和合并结果的数组

我在订阅一系列可观察的问题。就我而言,我有一个ID数组,我需要从状态中获取所有ID,并将所有结果组合成一个可观察的对象,并订阅该可观察的对象。我需要我的订阅者最终将获得一系列已解析的可观测值。

另外,我还需要保持此订阅的开放状态,因此,如果我的内在可观察的更改之一将通知我的订阅者。

这是我的代码:

getTransactionsByIDs(transactionsIDs){
return Observable.of(transactionIDs
  .map(transactionID => this.getTransactionByID(transactionID)));
}

this.transactionsService.getTransactionsByIDs(transactionsIDs)
.subscribe(transactions=>{
 ....
})
Run Code Online (Sandbox Code Playgroud)

订户函数中上述代码的结果是未解析存储的数组。

如何解决每个商店并将它们融合在一起?

我还尝试过在transactionID上使用Observable.from()将每个ID转换为一个可观察的对象,然后对其进行解析。它工作正常,但随后我的订户分别收到每个ID的通知。如果有一种方法可以批量处理所有Observable.from()结果(并保持订阅打开),请告诉我。

这是我的Observable.from()的样子:

getTransactionsByIDs(transactionsIDs){
return transactionIDs
  .mergeMap(transactionID => this.getTransactionByID(transactionID));
}

this.transactionsService.getTransactionsByIDs(Observable.from(transactionsIDs))
.subscribe(transactions=>{
 ....
})
Run Code Online (Sandbox Code Playgroud)

谢谢。

observable rxjs ngrx redux-observable angular2-observables

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

angular2 ngFor从ngOnInit()上的api获取数据时不起作用

comment.component.ts:

import { Component, OnInit } from '@angular/core';
import { Router} from '@angular/router'
import { Comment } from 'comment entity path'
import {CommentService} from 'comment service path'
import { Observable } from 'rxjs/Observable';
@Component({
    template: ` <ul><li *ngFor="let comment of comments|async"> {{comment.Name}}</li></ul>`
})
export class CommentComponent implements OnInit {
    comments: Observable<comment[]>;  

    constructor(private router: Router, private commentService: CommentService) {
    }

    ngOnInit() {
        this.comments = this.getComments();
    }

    getComments() {
        return this.commentService.getComments();
    }

}
Run Code Online (Sandbox Code Playgroud)

comment.service.ts

import { Injectable } from '@angular/core';
import { …
Run Code Online (Sandbox Code Playgroud)

angular2-observables angular

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

来自 Web API 响应的角度日期

我正在开发一个 Angular (4.1.2) Web 应用程序以及相应的 ASP.Net Core (1.1) Web API。

我有一个 Angular 服务,它向我的 Web API 发出数据 http 请求,并且从 Angular 服务返回的对象中的日期不是类型Date

Tasks在我的场景中,我的 Web 应用程序从 SQL 数据库获取数据,每个应用程序都Task包含 start 和 finish DateTime。我的 TasksController 使用 AutoMapper 将每个任务映射Task到一个TaskViewModel对象,并且我的 TasksControllerTaskViewModel有一个类型为 的 start 和 finish 属性DateTime

如果我在 TasksController 中放置一个断点并检查TaskViewModel要返回的对象,那么在请求之后,开始和结束属性都是类型DateTime,因此日、月、小时等都可以。

在 Angular 中,我有一个task-api.service.ts包含以下代码的文件:

public getTasks(): Observable<Task[]> {
    let tasksArray: Observable<Task[]> = this.http.get("/api/tasks").map((response: Response) => {
        return <Task[]>response.json();
    }).catch(this.handleError); …
Run Code Online (Sandbox Code Playgroud)

datetime angular2-observables angular

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

Angular 6 材质表原理图:如何从远程加载数据?

我正在使用材料表原理图,但不知道如何

我认为重要的部分是文件connect()中的方法datasource.tsthis.data只是一个数组。

  /**
   * Connect this data source to the table. The table will only update when
   * the returned stream emits new items.
   * @returns A stream of the items to be rendered.
   */
  connect(): Observable<any[]> {
    // Combine everything that affects the rendered data into one update
    // stream for the data-table to consume.
    const dataMutations = [
      observableOf(this.data),
      this.paginator.page,
      this.sort.sortChange
    ];

    // Set the paginators length
    this.paginator.length = this.data.length; …
Run Code Online (Sandbox Code Playgroud)

observable angular-material angular-material2 angular2-observables angular

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