Как динамически загружать ion-опции из массива?

1

У меня есть служба для загрузки и сохранения шаблонов, и я хочу, чтобы при нажатии на ion-select параметры загружались динамически, поэтому каждый сохраненный шаблон представлял собой параметр вместо жестко заданных параметров.

Я попытался использовать NgFor и создать экземпляр службы, которая обрабатывает шаблоны в файле JS.

Вот код HTML

'''
<ion-item>
    <ion-label>Load template</ion-label>
        <ion-select>
            <ion-option *ngFor = "let template of templates;">
                {{templates}}
            </ion-option>
        </ion-select>
</ion-item>
'''

Вот шаблон сервисного кода

'''
export class TemplateService {
    public templates: Template[] = [];
...
getAllTemplates(): Template[] {
    return this.templates;
}
'''

Вот код JS

'''
export class NewTransactionPage {
    templates: Template[];
...
constructor(public templateServicerino: TemplateService) {
    this.templates = this.templateServicerino.getAllTemplates();
'''

Я получаю сообщение об ошибке "Uncaught (в обещании): Ошибка: StaticInjectorError (AppModule) [NewTransactionPage → TemplateService: StaticInjectorError (Platform: core) [NewTransactionPage → TemplateService: NullInjectorError: Нет поставщика для службы шаблонов!"

  • 1
    в вашем коде есть опечатка, это *ngFor не ngfor.
  • 0
    Похоже, вы забыли объявить TemplateService в вашем app.module или, возможно, в одной из собственных зависимостей TemplateServices.
Теги:
angular
ionic-framework
ionic3

1 ответ

0
Лучший ответ

Объявите сервис в качестве поставщика. Один из способов сделать это - использовать аннотацию, подобную этой.

@Injectable({
  providedIn: 'root'
})

export class TemplateService {//body}
  • 0
    Спасибо, это решило проблему с сервисом, но есть кое-что, что мне не понятно, я скопировал этот формат из интернета <ion-option * ngFor = "let template of templates;">. нет ни одной переменной с именем "template" ни в моем JS-файле, ни в HTML-файле. Является ли этот "шаблон шаблонов" просто соглашением? другие примеры, которые я видел, похожи на "автомобиль автомобилей"
  • 0
    let template of templates означает, что вы определяете template , let template похож на var template . of ключевому слову получает один пункт за один раз из templates массива template переменных и цикл повторяется , пока все элементы не будут сделаны.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню