0
votes

Pourquoi mon composant Liste de messages ne se charge-t-il pas?

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

import { 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)
  }
}

post-list.component.html

const routes: Routes = [
  { path: '', redirectTo: '/blog', pathMatch: 'full'},
  { path: '', loadChildren: './posts/posts.module#PostsModule' },

]


8 commentaires

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 des messages .?


Veuillez poster le code de postservice


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


4 Réponses :


-1
votes

Essayez comme ceci

ngOnInit() {
    this.postService.getPosts().subscribe((response: any)=> {
      this.posts = response;
   })
  }


0 commentaires

-1
votes
this.postService.getPosts().subscribe((posts) => this.posts = posts);
Observables are lazy. Please subscribe to start them.

0 commentaires

-1
votes
    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

2 commentaires

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



1
votes

Je pense que vous devez charger votre module différemment dans le app.module.ts

const routes: Routes = [
  {path:'',component:PostListComponent},
  {path:':id',component:PostDetailComponent}
]

Remarque: dans Angular 8 et au-dessus, nous utilisons une manière différente de charger les modules, celle que vous avez utilisée: ./posts/posts.module#PostsModule est l'ancienne méthode, voir Documents angulaires .

Et modifiez vos itinéraires post.module.ts en

const routes: Routes = [{
  path: 'blog',
  loadChildren: () => import('./modules/posts/posts.module').then(m => m.PostsModule),
},
{ 
  path: '',
  redirectTo: '/blog',
  pathMatch: 'full'
},
{
  path:'dashboard',
  component:PostDashboardComponent
}]


2 commentaires

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