"this" keyword trong Angular 6

Mọi người cho mình hỏi tại sao ở angular 6, các method trong component hoặc directive lại luôn có pointer ‘this’ thế ? Mình ko hiểu về cái đó cho lắm, mong mọi người chỉ dẫn \

VD:

import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-voter',
  templateUrl: './voter.component.html',
})

export class VoterComponent implements OnInit {

	constructor() {};
	
	ngOnInit() {};

  @Input() name: string;
  @Output() voted = new EventEmitter<boolean>();
  didVote:boolean = false;

  vote (agreed: boolean) {
  	this.voted.emit(agreed);
  	this.didVote = true;
  }
}

trong method vote lại có this, nếu mình bỏ qua là nó kêu Error ấy

Lỗi gì. Xem nội dung lỗi là biết lý do.

Vd nếu mình bỏ this:
vote (agreed: boolean) {
voted.emit(agreed);
didVote = true;
}

thì nó ghi là :
Can not find name ‘didVote’. Did you mean the instance member ‘this.didVote’ ?
Can not find name ‘voted’. Did you mean the instance member ‘this.voted’ ?

Và mình cx để ý là trong mọi method ở trong component hay directive đều có this, phải chăng ‘this’ dùng để chỉ đến các thành phần DOM ở HTML kết nối đến các method đấy ko ? Nếu ko có ‘this’ thì Các phần từ DOM sẽ sử dụng các method trong component hoặc directive kiểu gì ?

Ý hiểu của mình là như thế, bạn xem có đúng phần nào ko? Nếu chưa chuẩn thì mong bạn chỉnh cho mình nhé, mình mới tập tành angular 1 tẹo nên chưa biết nhiều về nó lắm, cảm ơn bạn

Khi bạn không dùng this thì nó lại hiểu là bạn đang truy xuất tên biến trong phương thức hiện tại.
Vd

export class VoterComponent implements OnInit {

	constructor() {};
	
	ngOnInit() {};

  @Input() name: string;
  @Output() voted = new EventEmitter<boolean>();
  didVote:boolean = false;
  a:string="outer";
  b:boolean=false;

  test (b:boolean) {
        a:string ="inner";
  	
        // this.a có giá trị là outer
        // a có giá trị là inner
        // this.b = false
        // b là tham số của phương thức
  }
}

Cảm ơn bạn nhé, đã hiểu

con trỏ this mình dùng thấy khá giống this bên java. Chắc có lẽ do typescript có vay mượn cú pháp của các ngôn ngữ như C#, java

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?