Angular: ERROR Ошибка: Uncaught (в обещании): TypeError: Невозможно прочитать свойство 'set' из неопределенного - PullRequest
0 голосов
/ 25 января 2019

`

company.ts file

 - List item

export class Company{
    gstNo:number;
    contactNumber:number;
    contactName:string;
    phoneNo:number;
    address:string;
    companyName:string;
}

` введите описание изображения здесь

import { Injectable } from '@angular/core';
import {AngularFireDatabase,AngularFireList} from 'angularfire2/database';
import{Company} from './company';
@Injectable({
  providedIn: 'root'
})
export class CompanyService {

  private dbpath:'/register';
  companyRef:AngularFireList<Company>=null;
    constructor(private db : AngularFireDatabase){
      this.companyRef=this.db.list(this.dbpath);
    }
    createCompany(company:Company):void
   // postData(companyName:string)
    {
      
   this.companyRef.push(company);
   }
  /* private handleError(error){
console.log(error);

   } */
   
}
<html>

<head>

</head>

<body>
    <div [hidden]="submitted" style="width :300px">
  <div class="container">
    <div class="row">
      <div class="col-md-10 offset=md-1">
        <div class="row">
          <div class="col-md-5 register-left">
            <div class="fon">

              <h3>Join Us</h3>
              <p>Helping people to make their lives easier is our mission </p>
              <i class="material-icons">
                  navigation
                  </i>
            </div>
          </div>
          <div class="col-md-7 register-right">

            <h2>Register Here</h2>
            
             
            <div (ngSubmit)="onSubmit()" class="register-form">
              <div class="form-group">
                  <label>Company Name</label>
                <input ngModel name="company.companyName"  type="text" class="form-control" placeholder="Company Name">
              </div>

              <div class="form-group">
                  <label>Address</label>
                <input ngModel name="company.address"  type="text" class="form-control" placeholder="Address">
              </div>

              <div class="form-group">
                 
                  <label>Phone No </label>
                  <input ngModel name="company.phoneNo" type="text" class="form-control"  placeholder="PhoneNumber">
                  
              </div>

              <div class="form-group">
           
                  <label>Contact Person </label>
                  <input ngModel name="company.contactName"  type="text" class="form-control" placeholder="Name">
                  <input ngModel name="company.contactNumber"  type="text" class="form-control" placeholder="MobileNumber">
                
              </div>
              <div class="form-group">
                <label>GST No</label>
                <input ngModel name="company.gstNo"  type="text" class="form-control" placeholder="Eg:12ABCDE1Z5">
              </div>
              <button  type="submit" (click)="postData()" class="btn btn-primary">Register</button>
            
            <!-- <button (ngSubmit)="postData(companyName)" type="button" class="btn btn-primary">Register</button> -->
        </div>

          </div>
        </div>
      </div>
    </div>
  </div>

</div>

  <div [hidden]="!submitted">
    <h2>Registration Completed!</h2>
    

  </div>

 
</body>


</html>

 - List item

import { Component, OnInit } from '@angular/core';
import {CompanyService} from './company.service'
import{Company} from './company';
@Component({
  selector: 'app-register',
  templateUrl: './register.component.html',
  styleUrls: ['./register.component.scss']
 
})
export class RegisterComponent implements OnInit {
 
  company: Company=new Company();
  submitted=false;
  constructor(private companyService:CompanyService){}
  ngOnInit() {
   
  }
  postData():void{
    this.submitted=false;
    this.company=new Company();
  }
  save(){
    this.companyService.createCompany(this.company);
    this.company=new Company();
  }
 onSubmit(){
   this.submitted=true;
   this.save();
 }
}

1 Ответ

0 голосов
/ 25 января 2019

Ваша функция createCompany () должна выглядеть следующим образом: -

import { Injectable } from '@angular/core';
import {Observable} from 'rxjs';
import {AngularFirestore} from '@angular/fire/firestore';
import {Company} from './company';

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

  constructor(
    private afs: AngularFirestore,
  ) {
  }

  createCompany(company: Company): Observable<any> {
    this.afs.collection('register').add(company).then((newCompany) => {
      return newCompany;
    }).catch((err) => {
      return err.toLocaleString();
    });
    return;
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...