angular ส่งค่าข้าม component

Angular มีสองวิธีหลักในการส่งค่าข้ามคอมโพเนนต์:

  • การใช้ข้อมูลร่วมกัน
  • การใช้การฉีด injection

การใช้ข้อมูลร่วมกัน

วิธีหนึ่งในการแลกเปลี่ยนข้อมูลระหว่างคอมโพเนนต์คือการใช้ข้อมูลร่วมกัน ข้อมูลร่วมกันเป็นข้อมูลที่สามารถเข้าถึงได้จากทุกคอมโพเนนต์ในแอปพลิเคชัน

ในการส่งค่าข้ามคอมโพเนนต์โดยใช้ข้อมูลร่วมกัน ให้ทำตามขั้นตอนต่อไปนี้:

  1. ประกาศตัวแปรในโมดูลที่คุณต้องการแชร์ข้อมูล
1
2
3
4
5
6
7
8
9
10
11
12
13
import { NgModule } from '@angular/core';

@NgModule({
declarations: [],
imports: [],
providers: [],
bootstrap: []
})
export class SharedModule {

static data: string = 'This is shared data';

}
  1. นำเข้าโมดูลที่ประกาศตัวแปรข้อมูลร่วมกันลงในโมดูลของคอมโพเนนต์ที่ต้องการใช้ข้อมูลร่วมกัน
1
2
3
4
5
6
7
8
9
import { SharedModule } from './shared';

@NgModule({
declarations: [MyComponent],
imports: [SharedModule],
providers: [],
bootstrap: [MyComponent]
})
export class MyModule { }
  1. เข้าถึงข้อมูลร่วมกันในคอมโพเนนต์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Component, OnInit } from '@angular/core';
import { SharedModule } from './shared';

@Component({
selector: 'my-component',
templateUrl: './my-component.html',
styleUrls: ['./my-component.css']
})
export class MyComponent implements OnInit {

constructor() {}

ngOnInit() {
console.log(SharedModule.data); // This is shared data
}

}

การใช้การฉีด injection

อีกวิธีหนึ่งในการแลกเปลี่ยนข้อมูลระหว่างคอมโพเนนต์คือการใช้การฉีด injection บริการเป็นคลาสที่ทำหน้าที่เป็นช่องทางในการแลกเปลี่ยนข้อมูลระหว่างคอมโพเนนต์

ในการส่งค่าข้ามคอมโพเนนต์โดยใช้การฉีด ให้ทำตามขั้นตอนต่อไปนี้:

  1. สร้างบริการเพื่อจัดการข้อมูล
1
2
3
4
5
6
7
8
9
10
11
12
import { Injectable } from '@angular/core';

@Injectable({
providedIn: 'root'
})
export class MyService {

data: string = 'This is service data';

constructor() {}

}
  1. นำเข้าบริการลงในโมดูลของคอมโพเนนต์ที่ต้องการใช้ข้อมูล
1
2
3
4
5
6
7
8
9
import { MyService } from './my.service';

@NgModule({
declarations: [MyComponent],
imports: [],
providers: [MyService],
bootstrap: [MyComponent]
})
export class MyModule { }
  1. ฉีดบริการลงในคอมโพเนนต์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { Component, OnInit } from '@angular/core';
import { MyService } from './my.service';

@Component({
selector: 'my-component',
templateUrl: './my-component.html',
styleUrls: ['./my-component.css']
})
export class MyComponent implements OnInit {

private service: MyService;

constructor(private service: MyService) {}

ngOnInit() {
console.log(this.service.data); // This is service data
}

}

เปรียบเทียบการใช้ข้อมูลร่วมกันและการใช้การฉีด

การใช้ข้อมูลร่วมกันเป็นวิธีง่ายๆ ในการแลกเปลี่ยนข้อมูลระหว่างคอมโพเนนต์ อย่างไรก็ตาม ข้อมูลร่วมกันทั้งหมดจะพร้อมใช้งานสำหรับทุกคอมโพเนนต์ในแอปพลิเคชัน ซึ่งอาจนำไปสู่ปัญหาด้านความปลอดภัยและประสิทธิภาพ

การใช้การฉีดช่วยให้คุณควบคุมได้ว่าคอมโพเนนต์ใดสามารถเข้าถึงข้อมูลได้ สิ่งนี้ทำให้ง่ายต่อการรักษาความปลอดภัยและประสิทธิภาพของแอปพลิเคชันของคุณ

สรุป

Angular มีสองวิธีหลักในการส่งค่าข้ามคอมโพเนนต์:

  • การใช้ข้อมูลร่วมกัน
  • การใช้การฉีด injection

วิธีใดที่เหมาะกับคุณขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชันของคุณ