标签: angular-services

Angular cli服务生成:在root而不是/ services中生成服务

我正在搞乱Angular.试图用angular-cli生成一些东西.但是,在生成新服务时,服务将放在"/src/"文件夹中.

我想为此设置一个全局默认文件夹.是否有配置设置,我可以做以下事情:{ servicesDir: "/src/services/" }

我正在使用ng generate service Test命令.

angular-services angular-cli angular

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

Angular 2 Injected Service未定义

为什么我的DataHandlerService中的服务(this.loggerService)在注入时未定义?我认为依赖注入可以解决这个问题.我的loggerService适用于其他服务.请帮我意识到我哪里出错了.我的DataHandlerService代码如下:

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { LoggerService } from './logger.service';

@Injectable()

export class DataHandlerService 
{
constructor(private loggerService: LoggerService)
{

}

extractData(res: Response)
{
    let body = res.json();
    return body || {};
}


handleHttpError(error: any)
{
    let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';

    if (errMsg && this.loggerService)  //Why is this.loggerService always undefined?
    {
        this.loggerService.error(errMsg);
    }

    return Observable.throw(errMsg); …
Run Code Online (Sandbox Code Playgroud)

dependency-injection angular-services angular

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

angularjs $ httpProvider拦截器文档

我是角度(和编程)的新手,这是一个看似简单的问题,但我无法弄清楚.

一些教程建议使用$httpProvider.interceptors.push('interceptorName')来操纵http请求和响应.

我想了解更多关于拦截器的事情所以我看一下官方文档,但我找不到任何与拦截器相关的东西,只有一个方法(useApplyAsync([value]);)和一个属性(默认值)$httpProvider(docs)).

我从其他教程中知道拦截器是一个常规服务工厂,我知道如何使用它,但我的问题是:因为语法是$httpProvider.interceptors.push('interceptorName'),然后我希望我会找到一个名为"拦截器"的属性$httpProvider,但实际上我可以"T.我想念这个混乱的东西吗?或者我的概念从底部是完全错误的?

javascript http interceptor angularjs angular-services

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

Angular 2:两个后端服务调用第一个服务成功

在我的Angular 2应用程序中,我有后端服务,如下所示.

getUserInterests() {
    return this.http.get('http://localhost:8080/test/selections').map((res: Response) => res.json());
}
Run Code Online (Sandbox Code Playgroud)

在调用此服务后,我想在上一个服务成功之前调用另一个服务.

第二次服务

let params: URLSearchParams = new URLSearchParams();
    params.set('access_token', localStorage.getItem('access_token'));
    return this.http.get('http://localhost:8080/user/selections', { search: params }).map((res: Response) => res.json());
Run Code Online (Sandbox Code Playgroud)

这两个服务分别返回两个JSON数组.然后我需要用这两个数组进行一些登录.

EDITED

service.ts

getUserInterests() {
    return this.http.get('http://localhost:8080/test/selections').map((res: Response) => res.json());
}

getSavedSelections() {
    let params: URLSearchParams = new URLSearchParams();
    params.set('access_token', localStorage.getItem('access_token'));
    return this.http.get('http://localhost:8080/interest/user/selections', { search: params }).map((res: Response) => res.json());
}

getSelectionList() {
    var obs = this.getUserInterests().flatMap(
        (interests) => {
            return Observable.forkJoin([
                Observable.of(interests),
                this.getSavedSelections()
            ]);
        }
    );
    return obs;
}
Run Code Online (Sandbox Code Playgroud)

然后我在我的其他ts文件中使用以下来调用该服务. …

javascript angular-services angular

15
推荐指数
1
解决办法
3765
查看次数

NullInjectorError - 根独立组件未正确导入 HttpClientModule

我有一个问题,我想重写我的应用程序代码并将主模块更改为 main.ts 中指向的主根独立组件。

一切正常,但我对 HttpClientModule 有问题。我在 root 中提供的一项服务中使用 HttpClient。在 MainComponent 中,我将 HttpClientModules 添加到导入数组中,但随后出现错误,表示我没有向应用程序提供 HttpClientMoudle,并且此服务无法使用它。

Uncaught (in promise): NullInjectorError: R3InjectorError(Standalone[MainComponent])[MainService -> MainService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
Run Code Online (Sandbox Code Playgroud)

当我将此 HttpClientModule 添加到 AppRoutingModule 时,我也将其添加到 main.ts 中

bootstrapApplication(MainComponent, {
  providers: [importProvidersFrom(RoutingModule)],
});
Run Code Online (Sandbox Code Playgroud)

效果很好,服务没有任何问题。

这是包含此问题的基本示例的代码,有人可以解释为什么导入到根独立组件在这种情况下不起作用,但导入到 RoutngModule 可以解决问题吗?

https://stackblitz.com/edit/angular-fhpbvm?file=src/main.ts

angular-services angular angular-standalone-components

15
推荐指数
1
解决办法
9577
查看次数

Angular(v5)服务在APP_INITIALIZER promise解析之前构建

我期待Angular loadConfig()在构建其他服务之前等待我的函数结算,但事实并非如此.

app.module.ts

export function initializeConfig(config: AppConfig){
    return () => config.loadConfig();
}

@NgModule({
     declarations: [...]
     providers: [
          AppConfig,
         { provide: APP_INITIALIZER, useFactory: initializeConfig, deps: [AppConfig], multi: true }
     ] })
export class AppModule {
Run Code Online (Sandbox Code Playgroud)

}

app.config.ts

@Injectable()
export class AppConfig {

    config: any;

    constructor(
        private injector: Injector
    ){
    }

    public loadConfig() {
        const http = this.injector.get(HttpClient);

        return new Promise((resolve, reject) => {
            http.get('http://mycoolapp.com/env')
                .map((res) => res )
                .catch((err) => {
                    console.log("ERROR getting config data", err );
                    resolve(true);
                    return Observable.throw(err …
Run Code Online (Sandbox Code Playgroud)

bootstrapping dependency-injection angular-services angular angular-di

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

Angular:'无法找到'object'类型的不同支持对象'[object Object]'.NgFor仅支持绑定到Iterables,例如Arrays'

我创建了一个角度应用程序,它从json文件中获取数据.但我在使用html显示数据时遇到问题.很多变量都在荷兰语中,我很抱歉.我对这一切也有点新意:)

这是我的服务:

import {Injectable} from '@angular/core';
import {Http, RequestOptions, Response, Headers} from '@angular/http';
import {Observable} from "rxjs";
import {Afdelingen} from "./models";

@Injectable()
export class AfdelingService {
  private afdelingenUrl = '/assets/backend/afdelingen.json';
    constructor(private http: Http) {
      }

      getAfdelingen(): Observable<Afdelingen[]> {
        return this.http.get(this.afdelingenUrl)
          .map(this.extractData)
          .catch(this.handleError);
      }

      private extractData(res: Response) {
        let body = <Afdelingen[]>res.json();
        return body || {};
      }

      private handleError(error: any): Promise<any> {
        console.error('An error occurred', error);
        return Promise.reject(error.message || error);
      }

      addAfdeling(afdelingsNaam: string, afdeling: any): Observable<Afdelingen> {
        let body = JSON.stringify({"afdelingsNaam": …
Run Code Online (Sandbox Code Playgroud)

json angular-services angular angular-ngfor

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

订阅不是函数错误

我试图从服务订阅一个observable,它构建没有错误,但我在浏览器中查看时得到错误"this.service.getBanners(...).subscribe不是一个函数".

服务:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';

@Injectable()

export class BannerService {

    banners: any = ['1','2','3'];

    constructor(
    ) {}

    getBanners(): Observable<any[]> {
        return this.banners;
    }

    setBanners(banners: any[]): void {
        this.banners = banners;
    }

}
Run Code Online (Sandbox Code Playgroud)

零件:

import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { BannerService } from './../banner/banner.service';

@Component({
    selector: '.banner',
    templateUrl: './banner.component.html',
    styleUrls: ['./banner.component.sass'],
    encapsulation: ViewEncapsulation.None
})

export class BannerComponent implements OnInit {

    banners: any[]; …
Run Code Online (Sandbox Code Playgroud)

angular-services angular angular-observable

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

IONIC 3 CORS ISSUE

在尝试对API进行GET调用时,我遇到了Ionic 3的CORS问题.我正在使用Ionic本地服务器,在命令行中为live server运行ionic serve.

错误 否请求的资源上存在"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:8100 "因此不允许访问.

我尝试用代理设置更新"ionic.config.json",但似乎没有工作..

{
  "name": "projectLeagueApp",
  "app_id": "47182aef",
  "type": "ionic-angular",
  "integrations": {
    "cordova": {}
  },
  "proxies": [
    {
      "path":"/games",
      "proxyUrl": "https://api-2445582011268.apicast.io/games/"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的数据服务

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map';


@Injectable()
export class DataProvider {

  headers = new Headers({'user-key': '1234567890123'});
  options = new RequestOptions ({headers: this.headers}); 
  limit: number = 50;

  constructor(public http: Http) {
    console.log('Hello DataProvider Provider');
  }

  getGames(genre, offset_num) {

    let genre_id …
Run Code Online (Sandbox Code Playgroud)

json cors angular-services ionic3 angular

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

Observable vs Subject和asObservable

我正在学习RxJs,我正在寻求对我的假设进行确认或更正.

我试图在我可以在我的服务类的不同位置使用的服务中创建一个public read only observable .next().我想知道这是否是正确的方法:

private myObservable = new Subject<T>();
public myObservable$: Observable<T> = this.myObservable.asObservable();
Run Code Online (Sandbox Code Playgroud)
  • 用户可以订阅 myObservable$
  • 我可以用myObservable.next(...);

它的工作完美,但我有足够的经验知道我可能只是一个不知情的白痴(RxJS很大).这个用例是正确的模式和正确的对象吗?

javascript rxjs typescript angular-services angular

12
推荐指数
1
解决办法
4648
查看次数