私は、httpリクエストを介してデータを取得するための簡単なサービスを作成しました。データはjson形式であり、マップ関数を使用してBlogデータ型と一致させます。しかし、私が "getBlogs"というメソッドを呼び出してデータを取得すると、何も返されません。私が見逃していることについての考えは?角4応答を返さないhttp
コンポーネント。
import {Http} from '@angular/http';
import {forEach} from '@angular/router/src/utils/collection';
import {BlogService} from '../services/blog.service';
import {Component, OnInit} from '@angular/core';
import {Blog} from '../blog/blog';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/Rx';
@Component({selector: 'app-blog-list', templateUrl: './blog-list.component.html',
styleUrls: ['./blog-list.component.css'],
providers: [BlogService]})
export class BlogListComponent implements OnInit {
blogArray: Blog[] = [];
blogTitle: string;
loading: boolean;
private blogsUrl = 'http://www.mocky.io/v2/59a49eb3100000be05b2aba6';
constructor(private blogService: BlogService, private http: Http) {}
ngOnInit() {
this.blogService
.getBlogs(this.blogsUrl)
.subscribe(res => {
this.blogArray = res;
console.log('theBlogArray', this.blogArray);
});
}
}
サービス
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/Rx';
import {Headers, Http } from '@angular/http';
import { Injectable } from '@angular/core';
import {Blog} from '../blog/blog';
@Injectable()
export class BlogService {
private loading: boolean;
constructor(private http: Http) {}
getBlogs(url: string): Observable<Blog[]> {
this.loading = true;
return this.http.get(url)
.map((response) => response.json());
}
}
は答えで述べたように、それは、CORSの問題かもしれません。しかし、コンソールには何のエラーもありません。 CORSの問題が発生したときに私が通常行っていることである、私がブラウザ上でCORSクロムエクステンション(Allow-Control-Allow-Origin:*)を有効にした場合、もう一度示唆するように。何もまだ、コンソールやwebpackからの不平は正常にコンパイルされません。
jsonリクエストの値をサービス内の配列にハードコードしてコンポーネントからアクセスすると、値が返され、console.logでそれらをhtmlに表示できます。
同じブログlist.component。サブスクライブ関数からのログはクロムコンソールに何も表示されません –
Httpフェッチでエラーが発生しましたか? – Rajez
@ angle/httpからhttpクラスを使用しているため、fetchメソッドにアクセスできません。 –