Donc, comme l'indique la question, j'ai un composant dans mon module de publication, à savoir, PostList. Ce qu'il est censé faire est de se charger dès que l'utilisateur accède au site Web.
Le code pour cela est le suivant
posts-list.component.css post-list.component.htmlimport { Injectable } from '@angular/core'
import {
AngularFirestore,
AngularFirestoreCollection,
AngularFirestoreDocument
} from '@angular/fire/firestore'
import { Post } from './post'
import 'rxjs/add/operator/map'
@Injectable()
export class PostService {
postsCollection: AngularFirestoreCollection<Post>
postDoc: AngularFirestoreDocument<Post>
constructor(private afs: AngularFirestore) {
this.postsCollection = this.afs.collection('posts', ref =>
ref.orderBy('published', 'desc')
)
}
getPosts() {
return this.postsCollection.snapshotChanges().map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as Post
const id = a.payload.doc.id
return { id, ...data }
})
})
}
getPostData(id: string) {
this.postDoc = this.afs.doc<Post>(`posts/${id}`)
return this.postDoc.valueChanges()
}
getPost(id: string) {
return this.afs.doc<Post>(`posts/${id}`)
}
create(data: Post) {
this.postsCollection.add(data)
}
delete(id: string) {
return this.getPost(id).delete()
}
update(id: string, formData) {
return this.getPost(id).update(formData)
}
}
const routes: Routes = [
{ path: '', redirectTo: '/blog', pathMatch: 'full'},
{ path: '', loadChildren: './posts/posts.module#PostsModule' },
]
4 Réponses :
Essayez comme ceci
ngOnInit() { this.postService.getPosts().subscribe((response: any)=> { this.posts = response; }) }
this.postService.getPosts().subscribe((posts) => this.posts = posts); Observables are lazy. Please subscribe to start them.
Change the { path: '', redirectTo: '/blog', pathMatch: 'full'}, { path: '', loadChildren: './posts/posts.module#PostsModule' } to { path: 'blog', loadChildren: './posts/posts.module#PostsModule' } You can remove the { path: '', redirectTo: '/blog', pathMatch: 'full'} . Assuming the './posts' path is correct. When the route matches with /blog it checks in the postmodule routing ,it checks with const routes: Routes = [ {path:'blog',component:PostListComponent}, {path:'blog/:id',component:PostDetailComponent}, {path:'dashboard',component:PostDashboardComponent} ] and serves the PostListComponent
Votre réponse a été la plus utile, mais malheureusement, elle ne fonctionne toujours pas.
Premièrement, la page est-elle affichée, je veux dire est-elle dirigée vers la page souhaitée
Je pense que vous devez charger votre module différemment
dans le app.module.ts Remarque: dans Angular 8 et au-dessus, nous utilisons une manière différente de charger les modules, celle que vous avez utilisée: Et modifiez vos itinéraires post.module.ts en const routes: Routes = [
{path:'',component:PostListComponent},
{path:':id',component:PostDetailComponent}
]
./posts/posts.module#PostsModule
est l'ancienne méthode, voir Documents angulaires . const routes: Routes = [{
path: 'blog',
loadChildren: () => import('./modules/posts/posts.module').then(m => m.PostsModule),
},
{
path: '',
redirectTo: '/blog',
pathMatch: 'full'
},
{
path:'dashboard',
component:PostDashboardComponent
}]
Puisque le composant de tableau de bord de publication se trouve à l'intérieur du module de publication, il ne peut pas être acheminé directement dans app.module.ts:
Ensuite, ajoutez ce composant au post.module.ts à la place, et ajoutez "dashboard" comme chemin séparé (makig it blog / dashboard) dans l'URL. N'oubliez pas de l'ajouter avant le chemin avec: id
essayez de changer l'ordre de vos chemins, en faisant blog /: id avant blog
veuillez vous abonner à
this.postService.getPosts ()
méthode de service de poste getPosts ()Votre itinéraire est incorrect, voir angular.io/guide/… < / a>
quelle est la
taille
desmessages
.?Veuillez poster le code de
postservice code>
Une erreur dans la console?
@VivekDoshi je l'ai fait. Je suis extrêmement désolé de l'avoir édité si tard.
@hrdkisback aucune erreur du tout