Я работаю над формой для редактирования номера телефона и города пользователя. У меня есть вход для phoneNumber и выпадающий список с городами.
код в моем change-contacts.component.ts:
import { ActiveUserService } from 'src/app/services/active-user.service';
import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { UsersDbService } from 'src/shared/firebase/usersDb.service';
import { UserpanelUsersService } from 'src/pages/userpanel/userpanel-user.service';
import { LocalDataAndLogicService } from 'src/pages/userpanel/services/localDataAndLogic.service';
@Component({
selector: 'app-change-contacts',
templateUrl: './change-contacts.component.html',
styleUrls: ['./change-contacts.component.scss'],
//changeDetection: ChangeDetectionStrategy.OnPush
})
export class ChangeContactsComponent implements OnInit {
contactChangeForm: FormGroup
constructor(
public userpanelUsersService: UserpanelUsersService,
public localDataAndLogicService: LocalDataAndLogicService,
public usersDbService: UsersDbService,
public activeUserService: ActiveUserService
){}
ngOnInit() {
this.contactChangeForm = new FormGroup({
phoneNumber: new FormControl(null, [
Validators.minLength(12),
Validators.required
]),
country: new FormControl(''),
city: new FormControl('{{userpanelUsersService.user.sity}}')
});
console.log(this.userpanelUsersService.user.phoneNumber);
}
submitChange() {
const formData = {...this.contactChangeForm.value};
this.usersDbService.updateUsersProperty(this.userpanelUsersService.user.id, this.userpanelUsersService.user.sity, formData.city)
this.usersDbService.updateUsersProperty(users, this.userpanelUsersService.user.phoneNumber, formData.phoneNumber)
}
}
также у меня было 2 услуги: 1) usersDbService
import { AuthService } from './auth.service';
import { FireBaseService } from './firebase.service';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class UsersDbService {
public collectionName: string = 'users';
constructor(public db: FireBaseService, public auth: AuthService) {}
public usersCollection (): Observable<any[]> {
return this.db.getCollection(this.collectionName);
}
public usersItem(id: any): Observable<any> {
return this.db.getItem(this.collectionName, id);
}
public deleteUser(id: any): void {
this.db.deleteItem(this.collectionName, id);
}
public updateUser(item: any): void {
this.db.updateItem(this.collectionName,item.id)
}
public addUser(item: any, id:any): void {
this.db.addItem(this.collectionName,item,id);
}
public updateUsersProperty(id: any, name, value): void {
this.db.updateItemsProperty(this.collectionName, id, name, value);
}
public addUserWithPasswordAndEmail(email:string,password:string): void {
this.auth.createUserWithEmailAndPassword(email,password);
}
public checkUserWithPasswordAndEmail(email:string,password:string): void {
this.auth.signUserWithEmailAndPassword(email,password);
}
}
и 2) userpanel-user.service.ts
import { Injectable } from '@angular/core';
import { IUser } from 'src/models/Users.model';
@Injectable({
providedIn: 'root'
})
export class UserpanelUsersService {
public images: string[] = [];
user: IUser | any = {
id: '',
firstName: '',
lastName: '',
fullName: '',
phoneNumber: 1212122,
email: '',
gender: '',
sity: '',
country: '',
rating: [],
allowedWantsCardsNumber: 0,
comments: [],
images: this.images,
successfulExchanges: 0
};
clear(): void {
this.user = {
id: '',
firstName: '',
lastName: '',
fullName: '',
phoneNumber: 1212122,
email: '',
gender: '',
sity: '',
country: '',
rating: [],
allowedWantsCardsNumber: 0,
comments: [],
images: [],
successfulExchanges: 0
};
}
}
Когда я использую этот код из моего component.ts, есть В моей коллекции пользователей нет обновленных свойств, но создайте новое свойство с именем oldCityName: newCityName
, но мне нужно sity: newCityName.
Возможно, я использую неправильное свойство имени в updateUsersProperty.
Что мне делать?