Название службы не найдено в угловых 6 - PullRequest
0 голосов
/ 22 ноября 2018

Я новичок в angular 6, я написал 2 пользовательских сервиса, один для аутентификации и один для получения сообщений от Nodejs, сервис работает нормально для меня, но в angular-cli это дает мне следующую ошибку

src/app/user/posts/posts.component.ts(27,3): error TS2304: Cannot find name 'service'.

вот структура моего рабочего репозитория структура рабочего репозитория и вот код моего файла компонента

import { Component,OnInit,Input } from '@angular/core';
import { PostService } from '../../post.service';
import { CommentComponent} from './comment/comment.component';

@Component({
    selector: 'app-posts',
    templateUrl: './posts.component.html',
    styleUrls: ['./posts.component.css'],
    providers:[PostService]
})
export class PostsComponent implements OnInit {
    loggedin='';
    coment=false;
    setcoment=true;
    allpost=[];
    update=false;

ngOnInit() {
}
constructor(private service:PostService){
    // console.log("this")
    this.loggedin=localStorage.getItem('id');
    this.getPosts();
}

getPosts=function(){
    service.getPosts().subscribe(data=>{
        this.allpost=data;
    })
}
upload=function(d){
    if(d){
        console.log(d)
        service.createPost(d).subscribe(data=>{
          this.allpost.push(data);
          // console.log(data);
        });
    }
}

comment=function(post,d){
    // post.push({comment:d});
    // let index = this.allpost.indexOf(post._id);
    post["comment"]=d;
    service.createComment(post).subscribe(data=>{
    })
}
deletePost=function(post){
    service.deletePost(post._id).subscribe(data=>{
        // for(var i=0;i<this.allpost.length;i++){
        //  if(this.allpost[i]._id==post._id){
        //      delete(this.allpost[i])
        //  }
        // }
    });
}
editPost=function(){
    this.update=true;
}
updatePost=function(post){
    this.update=false;
    post.time=Date.now();
    service.updatePost(post).subscribe(data=>{
        console.log(data);
    });
    console.log(post)
}
setComments=function(id,){
    this.coment=true;
    this.setcoment=false;
    service.setComments(id,function(data){
        service.pushComments(data);
    });

}
}

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018
export class PostsComponent implements OnInit {
loggedin='';
coment=false;
setcoment=true;
allpost=[];
update=false;


constructor(private service:PostService){

   this.loggedin=localStorage.getItem('id');
   this.getPosts();
 }

getPosts=function(){
this.service.getPosts().subscribe(data=>{
    this.allpost=data;
})
}
upload=function(d){
if(d){
    console.log(d)
    this.service.createPost(d).subscribe(data=>{
      this.allpost.push(data);         
    });
 }
}

comment=function(post,d){    
post["comment"]=d;
this.service.createComment(post).subscribe(data=>{
})
}
deletePost=function(post){
this.service.deletePost(post._id).subscribe(data=>{

 });
}

updatePost=function(post){
this.update=false;
post.time=Date.now();
this.service.updatePost(post).subscribe(data=>{
    console.log(data);
});
console.log(post)
}
setComments=function(id,){
this.coment=true;
this.setcoment=false;
this.service.setComments(id,function(data){
    this.service.pushComments(data);
});

 }
}
  • используйте ключевое слово "this", которое относится к объекту, которому оно принадлежит.

  • В методе "this" ссылается на объект владельца.

0 голосов
/ 22 ноября 2018

Как и @ mr.void, уже прокомментированный, звонки должны иметь this.

Изменить все звонки на service.{anything} на this.service.{anything}.

...