标签: angular2-services

Angular 2缓存可观察的http结果数据

我有一个服务,通过HTTP服务获取数据并返回一个可观察对象.

在第一次调用之后,我想在服务内部缓存结果,一旦新组件尝试获取数据,它将从缓存结果中获取它.

有一个简单的解决方案吗?

observable angular2-services angular

16
推荐指数
2
解决办法
3万
查看次数

如何在Ionic 2/Angular 2中解决一些Promise之后返回Observable?

我试图在成功完成Promise之后返回一个observable,但该函数没有返回Observable.要特定于代码,我想从存储中获取auth令牌(返回promise),然后在获取数据之后,然后生成对Api的Post请求(返回Observable).通过这样做,sublime文本在函数上给出了一个错误,"声明类型既不是'void'也不是'any'的函数必须返回一个值"下面是我的代码,

logout() : Observable<any>{
  this.userData.getAuthToken().then((token)=>{
    this.token = token;
    this.headers = new Headers ({
      "X-USER-TOKEN": token
    });
    this.options = new RequestOptions ({
      headers: this.headers
    });
    var logout_url = "Api logout method";
    return this.http.post(logout_url,{},this.options)
      .map (res => res.json())
  });
}
Run Code Online (Sandbox Code Playgroud)

如果我只是做一个帖子请求,那么它会像这样返回

return this.http.post(logout_url,{},this.options)
  .map (res => res.json())
Run Code Online (Sandbox Code Playgroud)

但是当我尝试获取数据时,它不会从此发布请求中返回值.任何帮助都感激不尽!提前致谢

ionic2 angular2-services angular

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

Angular2全球服务提供商

/app
        - app.component.ts 
        - app.component.html (hide/show: menu bar)
        - app.global.service.ts (Public varible LoginSuccess:boolean)
        - main.ts
        /student
            - student.ts
            - student.service.ts
            - student.component.ts
            - student.component.html
        /security
            - login.component.ts (LoginSuccess = true)
            - login.component.html
Run Code Online (Sandbox Code Playgroud)

在我的Angular2应用程序中,我有一个简单的需求,我想根据登录成功显示隐藏菜单栏.为此,我创建了一个只有LoginSuccess布尔[hidden]=LoginSuccess变量的服务,我将在登录组件上设置它,并将在app.component.html上用于nav标签.

我现在面临的问题是,即使注射后app.global.service.tsconstructorapp.component.ts & login.component.ts价值不是持久的,并且每个构造函数创建的新对象app.global.service.ts.

问题:如何通过服务在应用程序中保持单个值.在Angular2文档的某个地方,我确实读到了Injectable服务是单例.

angular2-services angular

15
推荐指数
2
解决办法
3万
查看次数

Angular 2使用现有提供者

useExisting提供者的用途是什么?

难道useExistingOrThrowIfThereIsNone还是useExistingOrCreateIfThereIsNone?根据我们的需要,可以某种方式有目的地选择其中一种行为吗?如果其中一个不受支持,是否可以模拟不受支持的一个?

文档完全不清楚,只是给出了一个useExisting可以重用实例的例子useClass.

javascript typescript angular2-services angular

15
推荐指数
3
解决办法
8140
查看次数

ts1109:表达式预期角度误差

我是从https://angular.io/docs/ts/latest/guide/router.html关注此示例的

我也试图用服务做类似的列表,但是当我写这行时有些原因

servingpatients = Patient[];
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我收到此错误,如果我删除它,该事情有效.不知道这样做会在样本中做些什么.控制台错误:

未捕获的SyntaxError:意外的令牌]

类型编译期间的终端错误

app/dashboard/dashboard.component.ts(35,27):错误TS1109:预期的表达式

dashboard.component.ts

import {Component, OnInit} from 'angular2/core';
import {Patient, DashboardService} from './dashboard.service';
import {Router} from 'angular2/router';
export class DashboardComponent implements OnInit{

servingpatients = Patient[];

  constructor(private _service : DashboardService,
    private _router: Router){}


  ngOnInit(){
  this._service.getServingPatients().then(servingpatients => this.servingpatients = servingpatients)
  }

}
Run Code Online (Sandbox Code Playgroud)

angular2-services angular

14
推荐指数
1
解决办法
3万
查看次数

打字稿getter和setter错误

好吧,这是我第一天使用打字稿做一些Angular 2,我试着做一个简单的getter和setter服务.

import {Injectable} from "angular2/core";

@Injectable()
export class TodoService {

  private _todos:Array = [];

  get todos():Array {
    return this._todos;
  }

  set todos(value:Array) {
    this._todos = value;
  }

}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么Typescript编译器抛出以下错误,因为我认为它应该没问题.

ERROR in [default] /Users/testguy/WebstormProjects/angular2-seed/src/app/services/todo-service.ts:6:17 
Generic type 'Array<T>' requires 1 type argument(s).

ERROR in [default] /Users/testguy/WebstormProjects/angular2-seed/src/app/services/todo-service.ts:8:14 
Generic type 'Array<T>' requires 1 type argument(s).

ERROR in [default] /Users/testguy/WebstormProjects/angular2-seed/src/app/services/todo-service.ts:12:18 
Generic type 'Array<T>' requires 1 type argument(s).
Run Code Online (Sandbox Code Playgroud)

typescript angular2-services angular

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

启动时后端的Angular2加载配置

在我的Angular2应用程序中,我正在尝试使用HTTP在引导程序中从后端加载配置,以便我可以使用提取的数据来创建角度服务.

每当我尝试读取保存在我的Config中的HTTP响应时,我总是得到TypeError:无法读取未定义错误的属性'url'.

看起来HTTP请求仅在整个引导程序方法完成时才完成,而我的代码尝试在检索之前提取Observable响应.

如何修复它以从服务器中提取配置并使用它在启动时创建角度服务?(我想在提取数据的提供者中创建服务)

如果在启动时有更好的方法从服务器中提取配置,请发表评论.

我的main.ts看起来像这样:

bootstrap(AppComponent, 
    [APP_ROUTER_PROVIDERS, HTTP_PROVIDERS, ConfigurationService, Config])
    .catch(err => console.error(err)
);
Run Code Online (Sandbox Code Playgroud)

configuration.service.ts

@Injectable()
export class ConfigurationService {

    constructor(private http: Http) {
    }

    load() {
        return this.http.get('config/getConfig').map(response => response.json());
    }

}
Run Code Online (Sandbox Code Playgroud)

config.ts

@Injectable()
export class Config {

    public config;

    constructor(public configurationService: ConfigurationService) {
        configurationService.load().subscribe(
            config => this.config = config,
            error => console.error('Error: ' + error)
        );
    }

    get(key: any) {
        return this.config[key];
    }
}
Run Code Online (Sandbox Code Playgroud)

app.component.ts

@Component({
    selector: 'app',
    templateUrl: 'app/app.component.html',
    styleUrls: …
Run Code Online (Sandbox Code Playgroud)

angular2-services angular

14
推荐指数
2
解决办法
9138
查看次数

angular2 NgFor仅支持绑定到诸如Arrays之类的Iterables

Angular2 rc.6

在json数据上运行循环时出现以下错误

core.umd.js:5995 EXCEPTION:app/modules/mbs/components/menu.html:5:4引起的错误:无法找到'object'类型的不同支持对象'[object Object]'.NgFor仅支持绑定到诸如Arrays之类的Iterables.

我的html循环,注意:我只是想在响应中迭代属性和数组.

<li *ngFor="let item of menuItems">
{{item}}
</li>
Run Code Online (Sandbox Code Playgroud)

我的服务方法

getMenuItems():Promise<any>{
    return this.http.get('api/menu').toPromise().
    then(response => response.json())
        .catch(this.handleError)

}
Run Code Online (Sandbox Code Playgroud)

以下是我的json回复

{ "text": "Menu", "children": [ { "text": "Home", "url": "/spatt-web/home" }, { "text": "Configure", "children": [ { "text": "Tri-Party Program", "children": [ { "text": "Margins and Filters", "url": "/sp-rrp/config/operation" }, { "text": "Fields and Desirability", "url": "/spatt-rrp/config/program" } ] }, { "text": "Shared Settings", "url": "/shared-config/config" }, { "text": "SOMA Limits", "url": "/outright-config/config" } …
Run Code Online (Sandbox Code Playgroud)

angular2-services angular

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

如何修复Angular 2`Uncaught(在promise中):TypeError:无法读取null`的属性'query'?

我一直在使用Angular 2文档中的Heroes教程进行实验.但是,我已经明白我不明白这个错误发生了什么:

Uncaught (in promise): TypeError: Cannot read property 'query' of nullbrowser_adapter.ts:88.

涉及的两件是HeroDetailComponentHeroService.

import { Component, OnInit } from '@angular/core'; 
import { RouteParams } from '@angular/router-deprecated';

import { Hero, HeroService } from '../index';

@Component({
    selector: 'my-hero-detail',
    templateUrl: ...
    styleUrls: [...]
})
export class HeroDetailComponent implements OnInit {

    hero: Hero;

    // TEMPORARY FIX:
    _heroService = new HeroService();  // Avoids injection

    // constructor(private _heroService: HeroService,
    //             private _routeParams: RouteParams) {}

    constructor(private _routeParams: RouteParams) {}

    ngOnInit() …
Run Code Online (Sandbox Code Playgroud)

angular2-services angular

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

'FirebaseApp'类型中缺少属性'automaticDataCollectionEnabled'

我们安装角火力基地

npm install firebase angularfire2 --save
Run Code Online (Sandbox Code Playgroud)

而且这个错误发生了

ERROR in node_modules/angularfire2/firebase.app.module.d.ts(10,22): error TS2420: Class 'FirebaseApp' incorrectly implements interface 'FirebaseApp'.
Property 'automaticDataCollectionEnabled' is missing in type 'FirebaseApp'.
Run Code Online (Sandbox Code Playgroud)

我怎么解决呢?

firebase angular2-services angular

13
推荐指数
3
解决办法
5333
查看次数