Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

97
Visualizações
No se puede llamar a un método declarado en una clase desde otra clase singleton

Como dice el título, estoy tratando de acceder a un método que está declarado en una clase (Publicación) desde otra clase (Comentarios) que sigue un patrón único. La clase de publicación es una clase de servicio que tiene algunos métodos para realizar llamadas a la API. Así que necesito tener acceso a ellos desde dentro de la clase Comentarios para poder hacer llamadas a la API.

Así es como se ve una versión simplificada de la clase Post en este momento:

 @Injectable({ providedIn: 'root' }) class PostService extends AnotherService { constructor( auth: AuthService, http: HttpClient ) { super('string', auth, http); } getPost( id: string ) { return this.http.get(`posts/${id}`); } }

Así es como se ve la clase Comentarios:

 class Comments { private postService: PostService; private static instance; private constructor() {} static createInstance() { if ( !Comments.instance ) { Comments.instance = new Comments(); } return Comments.instance; } getComments( id ) { // these does not even run this.postService.getPost( id ) .then( post => { console.log( post ); }) .catch( error => { console.log( error ); }); } }

¿Cómo puedo hacer para acceder a él?

=========ACTUALIZAR=======

Creando una instancia de la clase Comment en otra clase llamada ClassC.

 const instance - Comments.createInstance(); instance.getComments( id );
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Use un nuevo servicio para guardar los datos de su objeto de comentario, digamos que tenemos un servicio llamado SharedDataService.

 private _comments: Array<any> =[];// or array<IComment> (a defined interface from your part) class SharedDataService(){} get comments():Array<any>{ return this._comments} set comments(value:Array<any>){ this._comments = value; } }

Debe iniciar PostService en su constructor de comentarios

 private constructor(private postService: PostService,private sharedDataService :SharedDataService) { } getComments() { // these does not even run this.postService.getPost( '1' ) .then( post => { this.sharedDataService.comments = post // if You get an array of comments here console.log( post ); console.log(this.comments)// getter function its new value has been set }) .catch( error => { console.log( error ); }); get comments(){ this.sharedDataService.comments } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Si desea enviar dos solicitudes http en paralelo, obtenga sus valores. Debe usar el operador combineLatest rxjs. Su servicio de correos será así:

 getPost(id: string) { $postDataHttpRequest = this.http.get(`posts/${id}`); $commentsDataHttpRequest = this.http.get(`posts/${id}/comments`); return combineLatest($postDataHttpRequest, $commentsDataHttpRequest) }

///

Así es como se ve la clase Comentarios:

 private constructor(private postService: PostService) { } getComments() { this.postService.getPost( '1' ) .subscribe( (posts,comments) => { console.log(posts); console.log(comments); },(error)=>{console.log(error)}) }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda