angular - วิธีเชื่อมต่อ Output() และ Input() decorators?
ฉันต้องการสร้างส่วนติดต่อสำหรับคอมโพเนนต์ที่สร้าง JSON ฉันต้องการบังคับให้คอมโพเนนต์แต่ละอันที่นำไปใช้ต้องรับประเภทเป็น Input และสร้าง Output
import { EventEmitter, Output, Input } from '@angular/core';
import { Foo, FooConfiguration } from '../../interfaces';
interface FooConfigurator {
@Output() fooWasConfigured: EventEmitter<FooConfiguration>;
@Input() fooInstance: Foo;
}
จากนั้น ส่วนประกอบที่นำ FooConfigurator ไปใช้งานจะต้องทำให้มั่นใจในสิ่งต่อไปนี้:
import { EventEmitter, Output, Input } from '@angular/core';
import { Foo, FooConfiguration, FooConfigurator } from '../../interfaces';
class ConcreteFooConfigurator implements FooConfigurator {
@Output() fooWasConfigured: EventEmitter<FooConfiguration>;
@Input() fooInstance: Foo;
}
การกำหนดอินเทอร์เฟซนี้ล้มเหลวเพราะเป็นไวยากรณ์ที่ไม่ถูกต้อง ฉันจะทำมันได้อย่างไร หรือมีวิธีที่ดีกว่าในการแก้ปัญหานี้ไหม?
คำตอบ #1
ในขณะนี้เป็นไปไม่ได้ที่จะเชื่อมต่อ decorators กับ TypeScript วิธีที่ดีที่สุดลำดับถัดมาคือเพียงแค่เชื่อมต่อประเภทและเพิ่มความคิดเห็นเกี่ยวกับมัน
interface FooConfigurator {
fooWasConfigured: EventEmitter<FooConfiguration>;
fooInstance: Foo;
}
โดยหลักแล้ว สิ่งนี้ครอบคลุมความต้องการได้ค่อนข้างมาก EventEmitter จะดูน่าเชื่อถือเหมือนที่ควรจะส่งอีเวนต์ และใน fooInstance จะแนะนำให้คลาสมีคุณสมบัติเช่นนั้น วิธี ใช้สิ่งเหล่านี้อยู่ในขอบเขตของคอมเมนต์ อย่างไรก็ตาม
