Невозможно создать конструктор для компонента angular со строкой в ​​качестве параметра - PullRequest
2 голосов
/ 16 марта 2020

У меня есть простой компонент:

export class PlaintextComponent implements OnInit {
  schema: PlaintextTagSchema;

  constructor(private _ngZone: NgZone, prompt: string, maxRows: number, maxChars: number) {
    this.schema.prompt = prompt;
    this.schema.maxRows = maxRows;
    this.schema.maxChars = maxChars;
  }

  ngOnInit() {
  }
}

Когда я пытаюсь скомпилировать свое приложение, используя ng serve, я получаю сообщение об ошибке:

component.ts:25:40 - error NG2003: No suitable injection token for parameter 'prompt' of class 'PlaintextComponent'.
Found string

25   constructor(private _ngZone: NgZone, prompt: string, maxRows: number, maxChars: number) {

Я посмотрел все на inte rnet для этой ошибки crypti c и не нашел ничего похожего на исправление. Для меня это выглядит как правильный конструктор, но я новичок в angular / TS, и вполне возможно, что мне не хватает чего-то невероятного c. Заранее спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 22 марта 2020

У меня была такая же ошибка. Похоже, Angular пытается внедрить некоторые зависимости с параметрами в конструкторе (как те, которые вы делаете с сервисами), но в вашем случае это приведет к ошибкам. Просто объявите свойства вашего класса из параметров конструктора. Удалите свойства вашего класса из конструктора следующим образом:

export class PlaintextComponent implements OnInit {
  schema: PlaintextTagSchema;
  private _ngZone: NgZone;
  prompt: string;
  maxRows: number; 
  maxChars: number;

  constructor() {}

  ngOnInit() {
  }
}

Возможно, вам придется найти другой способ инициализации вашего компонента, например, свойства ввода.

Пожалуйста, дайте мне знать, если он работает ! ; D

0 голосов
/ 29 марта 2020

Переписать конструктор следующим образом

  constructor(private _ngZone: NgZone, @Inject(String) prompt: string, maxRows: number, maxChars: number)

не забудьте

import { Inject } from '@angular/core';
0 голосов
/ 16 марта 2020

Я не вижу импорта для ngZone, но, возможно, вы исключили это из своего примера.

import {Component, NgZone} from '@angular/core';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...