Объявить элемент объекта в качестве входных данных()

#angular #typescript

Вопрос:

Возможно ли сделать что-то подобное?

   fruits = {
    orange: @Input() as any //gives an error
  } 
 

Или это единственный выход?

   @Input() orange!:any;

  fruits = {
    orange:this.orange
  }
 

Комментарии:

1. Это декоратор. Он не предназначен для такого использования.

Ответ №1:

Я понятия не имею, чего вы пытаетесь достичь. Но ответ-да, вы можете делать то, что пытаетесь сделать.

Вот рабочая демонстрация.

Фруктовый Компонент

 @Component({
  selector: 'fruit',
  template: `{{fruits | json}}`,
  styles: [`h1 { font-family: Lato; }`]
})
export class FruitComponent  {
  @Input() fruits: any;
}
 

Оранжевый компонент

 @Component({
  selector: 'orange',
  template: `
    <fruit [fruits]="fruits"></fruit>
  `
})
export class OrangeComponent implements OnInit {
  @Input() orange: any;
  fruits: any;

  ngOnInit(): void {
    this.fruits = {
      orange: this.orange
    };
  }
}
 

Компонент вызывающего абонента

 <orange orange="some Value"></orange>