Когда я перехожу к компоненту результатов, служба внутри ngOnInit работает должным образом. Затем я открываю боковое меню, перехожу на другую страницу, затем снова перехожу на страницу результатов. Но на этот раз страница не отображает результаты. Вместо этого отображается ng-template. Никаких ошибок на консоли, ничего. ngOnInit работает, отображает console.log('init'); Но в сервис не звонят. Если я вставляю вызов службы внутри конструктора или внутри функции, он тоже не работает. Я пробовал с ngZone и без него, ничего.
Я должен упомянуть, что если я нажму F5 прямо на странице результатов, это сработает. Просто, когда я перехожу к нему через this.router.navigate(['/resultados']);
, это не работает.
Это компонент результатов:
import { Component, OnInit, NgZone } from '@angular/core';
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
import { NavService } from '../shared/nav.service';
import {AngularFirestore} from 'angularfire2/firestore';
import {firestoreService} from '../shared/firestore.service';
import {Usuario} from '../../models/usuario'
@Component({
selector: 'resultados',
templateUrl: 'resultados.component.html'
})
export class ResultadosComponent implements OnInit {
servId:any;
users: Usuario[];
constructor(
private fService: firestoreService,
private service:NavService,
private router: Router,
private zone: NgZone
) { }
ngOnInit() {
console.log('init')
this.fService.getUsers().subscribe(users=>{
this.zone.run(()=>{
this.users = users;
})
})
}
}
Это результаты HTML:
<div class="resultados" *ngIf="users?.length > 0;else noUsers">
<ul *ngFor="let user of users">
<li>{{user.uid}}</li>
</ul>
</div>
<ng-template #noUsers>
<hr>
<h5>Nenhum usuário cadastrado</h5>
</ng-template>
Это firestore.service:
import { Injectable } from '@angular/core';
import {AngularFirestore, AngularFirestoreCollection,
AngularFirestoreDocument} from 'angularfire2/firestore';
import {Usuario} from '../../models/usuario'
import {Observable} from 'rxjs/Observable';
@Injectable()
export class firestoreService {
usersCollection: AngularFirestoreCollection<Usuario>;
users:Observable<Usuario[]>;
constructor(public afs:AngularFirestore){
this.users = this.afs.collection('users').valueChanges();
}
getUsers(){
return this.users;
}
}
this.router = router
методы, они не нужны. - person Roddy of the Frozen Peas   schedule 11.02.2018