javascript - Kan inte läsa egenskapen av undefined när man anropar funktionen med setInterval i Angular
När man anropar en funktion utan problem, men när man anropar den i setInterval så fortsätter den att anropas varje sekund och det ger mig felet: kan inte läsa egenskapen av undefined på tjänsten!
constructor(private route: ActivatedRoute,private
conversationService:ConversationService) {
}
ngOnInit() {
this.sender = this.route.snapshot.paramMap.get("username");
this.receiver = sessionStorage.getItem("username");
setInterval(
function()
{
this.conversationService.
getTheConversation(this.receiver,this.sender).subscribe(
data=>this.result=data)
},1000);
}
fel: FEL TypeError: Kan inte läsa egenskapen 'getTheConversation' av undefined
Svar #1
Försök
ngOnInit() {
this.sender = this.route.snapshot.paramMap.get("username");
this.receiver = sessionStorage.getItem("username");
setInterval(()=>
{
this.conversationService.
getTheConversation(this.receiver,this.sender).subscribe(
data=>this.result=data)
},1000);
}
använd fat arrow => för att behålla this-omfånget. När du deklarerar en ny function, skapar den sitt eget this.
Svar #2
Funktionen setInterval hänvisar till ett annat this-objekt,
Det korrekta sättet att göra detta skulle vara,
const newThis = this;
setInterval(
function()
{
newThis.conversationService.
getTheConversation(newThis.receiver,newThis.sender).subscribe(
data=>newThis.result=data)
},1000);
Följ länken för fler andra sätt att göra det https://stackoverflow.com/a/7890978/11914056
