ค้นหาเว็บไซต์

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 จะแนะนำให้คลาสมีคุณสมบัติเช่นนั้น วิธี ใช้สิ่งเหล่านี้อยู่ในขอบเขตของคอมเมนต์ อย่างไรก็ตาม

บทความที่เกี่ยวข้อง