Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular RxJS未从Firebase正确返回json_Angular_Firebase_Rxjs - Fatal编程技术网

Angular RxJS未从Firebase正确返回json

Angular RxJS未从Firebase正确返回json,angular,firebase,rxjs,Angular,Firebase,Rxjs,我正在创建一个CMS应用程序,只是为了测试,我使用谷歌Firebase的登录按钮获取数据。我使用rxjs正确地返回JSON,但它返回一个带有某种令牌的奇怪对象。请帮我拿到没有那个标记的东西 ajax.service.ts import { Injectable } from '@angular/core'; import { Headers, Http, Response } from '@angular/http'; import { map } from 'rxjs/operators';

我正在创建一个CMS应用程序,只是为了测试,我使用谷歌Firebase的登录按钮获取数据。我使用rxjs正确地返回JSON,但它返回一个带有某种令牌的奇怪对象。请帮我拿到没有那个标记的东西

ajax.service.ts

import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class AjaxService {

  constructor(private http: Http) { }

  saveData(data: any) {
    const header = new Headers({'Content-type': 'application/json'});
    return this.http.post('https://cms-app-dev.firebaseio.com/data.json', data, {headers: header});
  }

  getData() {
    return this.http.get('https://cms-app-dev.firebaseio.com/data.json')
        .pipe(map(
                (response: Response) => {
                    return response.json();
                }
            ));
  }
}
login.component.ts

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { AjaxService } from '../ajax.service';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
    loginForm: FormGroup;
    submitted: boolean = false;

  constructor(private ajaxService: AjaxService) { }

  ngOnInit() {
    this.loginForm = new FormGroup({
        'email': new FormControl(null, [Validators.required, Validators.email]),
        'password': new FormControl(null, Validators.required)
    });
  }

  onSubmit() {
    this.ajaxService.getData().subscribe(
          (res: any) => {console.log(res);},
          (error) => {console.log(error);}
      );
  }

}


因为您正在将数据发布到firebase,所以它会将每个对象存储在一个唯一的令牌下。因此,它本身就是一个必须迭代的对象。因此,不能在组件模板中使用常规循环。因此,在ts文件中使用for-in循环并将其存储在数组形式中,您将能够迭代模板中存储的数据。希望有帮助!!祝你好运

我只是做了一点小小的修改。请检查我收到的
无法读取未定义的属性“push”
错误。将数据定义为数组在snippet@dummy
let
声明是块范围的,相反,它应该是
public data=[]
您正在使用的
HttpModule
,您应该改用它
let data=[];

onSubmit() {
        this.ajaxService.getData().subscribe(
              (res: any) => {
                     for(let object in res) {
                          data.push(object.email) }
             },
              (error) => {console.log(error);}
          );
}