如何将数据从被动表单推送到firestore?我现在创建了反应形式,我只需要将信息推送到集合中。表格中的文件提交。如何用Angular 5实现这一目标?我写了反应形式,最后一部分是将数据推送到firebase。
这是当前的代码: 从'@ angular / core'导入{Component,OnInit,OnDestroy}; 从'angularfire2 / firestore'导入{AngularFirestore,AngularFirestoreCollection}; 从'angularfire2 / database'导入{AngularFireDatabase}; 从'angularfire2 / auth'导入{AngularFireAuth}; 从'rxjs / Observable'中导入{Observable};
import { FirestoreService } from '../../../../providers/firestore.service';
import { Subject } from 'rxjs/Subject';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/observable/combineLatest';
import * as firebase from 'firebase/app';
import { ActivatedRoute } from '@angular/router';
import { FormGroup, FormControl, Validators } from '@angular/forms';
export interface Item {
productName: '';
productTitle: '';
productPrice: '';
productDescription: '';
}
@Component({
selector: 'app-form',
templateUrl: './form.component.html',
styleUrls: ['./form.component.scss']
})
export class FormComponent implements OnInit {
productId: any;
prodId: string;
ref: AngularFirestoreCollection<Item>;
items: Observable<Item[]>;
// for the form
Item: FormGroup;
FormGroup = this.db.col$('items');
// end for the form
private routeSubscribed: any;
constructor(
private route: ActivatedRoute,
public db: FirestoreService,
private afs: AngularFirestore
) { }
ngOnInit() {
this.ref = this.afs.collection('items');
this.items = this.ref.valueChanges();
this.items = this.db.col$('items');
this.items = this.db.colWithIds$('items');
this.productId = this.db.doc$(`items/${this.prodId}`);
/// here is the form for products
const data: Item = new Item ({
productName: new FormControl('', {
validators: Validators.required
}),
productTitle: new FormControl('', {
validators: Validators.required
}),
productPrice: new FormControl('', {
validators: Validators.required
}),
productDescription: new FormControl('', {
validators: Validators.required
})
}, { updateOn: 'submit' } );
// end here is the form for products
this.afs.doc(`items/tops`).set(data);
this.db.set(`items/tops`, data);
}
}
答案 0 :(得分:0)
这就是我接近它的方式: 我假设您已完成所有设置以使用angularfire2
创建服务(items.service.ts)并建立连接和请求: (使用界面定义Item或创建模型文件,我更喜欢模型文件)
itemsCollection: AngularFirestoreCollection<Item>;
items: Observable<Item>;
collectionPath: string = "YOUR_PATH";
constructor(private afs: AngularFirestore) {
this.itemsCollection = this.afs.collection(this.collectionPath);
}
addItem(item: Item){
this.itemsCollection.add(item);
}
使用items.component.ts文件生成表单并推送数据:
item: Item;
itemForm: FormGroup;
constructor(private itemsService: ItemsService) { }
ngOnInit(){
this.initForm()
}
private initForm(){
this.itemForm = new FormGroup({
'name' : new FormControl('', Validators.required),
'title': new FormControl('', Validators.required)
......
});
}
onSubmit(){
this.itemService.addItem(this.itemForm.value);
}
在你的html文件中:
<form [formGroup]="itemForm"
(ngSubmit)="onSubmit()">
并在您的输入中分配formControlName 并添加一个类型为&#34的提交按钮;提交&#34;
我希望它有所帮助。这是我第一次使用它,所以我道歉现在以更好的方式格式化答案。