Angular 6: объявление класса без модификатора default должно иметь имя

Я получаю такую ​​ошибку в моем ts.file, что может быть причиной того, что я только начинаю изучать угловой / ионный мир.


Я пробовал разные способы его очистить, но безуспешно.

import { Component } from '@angular/core';
import { NavController, NavParams } from '@ionic/angular';
import {Announcements} from '../../../environments/environment';
import {AngularFireAuth} from 'angularfire2/auth';
import {AngularFireDatabase} from 'angularfire2/database';
import { take } from 'rxjs/operators';
import { Directive, HostListener, ElementRef } from '@angular/core';

@Component({
  selector: 'app-add-our-announcements',
  templateUrl: './add-our-announcements.page.html',
  styleUrls: ['./add-our-announcements.page.scss'],
})
@Directive({
  selector: 'ion-textarea[autosize]' // Attribute selector,
})
export class {

    constructor(
      private afauth: AngularFireAuth,
      private afDatabase: AngularFireDatabase,
      public navCtrl: NavController,
      public navParams: NavParams,
      public element: ElementRef) {
    }

   announcements = {} as Announcements;

  @HostListener('document:keydown.enter', ['$event']) onKeydownHandler() {
    this.adjust();
  }

  AfterViewInit() {
      this.adjust();
    }

    adjust(): void {
      const textArea = this.element.nativeElement.getElementsByTagName('textarea')[0];
      textArea.style.overflow = 'hidden';
      textArea.style.height = 'auto';
      textArea.style.height = (textArea.scrollHeight + 42) + 'px';
    }



        createAnnouncements() {
            this.afauth.authState.pipe(take(1)).subscribe(() => {
              this.afDatabase.list(`announcements`).push(this.announcements)
                .then(() => this.navCtrl.navigateForward('ListOfOurAnnouncementsPage'));
            });
        }

  }

укажите имя для вашего класса, как подсказывает ошибка. export class MyClassNameHere

Richard Hubley 21.11.2018 15:49

теперь я получаю такую ​​ошибку: «Имя класса AddOurAnnouncementsPage должно заканчиваться суффиксом Директива»

James Macharia 21.11.2018 16:07
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
2
485
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вашего класса нет названия. Бывший:

@Directive({
         selector: 'ion-textarea[autosize]' // Attribute selector,
     })


 export class TextAreaDirective {

     constructor() {
}

Посмотрите, пожалуйста, на как классы определены в Typescript:

Также посмотрите Руководство по стилю Angular для норм кодирования.

Do use consistent type names for all components following a pattern that describes the component's feature then its type. A recommended pattern is feature.type.ts.

Do use conventional type names including .service, .component, .pipe, .module, and .directive. Invent additional type names if you must but take care not to create too many.

Why? Type names provide a consistent way to quickly identify what is in the file.

Why? Type names make it easy to find a specific file type using an editor or IDE's fuzzy search techniques.

Why? Unabbreviated type names such as .service are descriptive and unambiguous. Abbreviations such as .srv, .svc, and .serv can be confusing.

спасибо, я только что добавил имя в класс, и теперь он выдает ошибку «Имя класса AddOurAnnouncementsPage должно заканчиваться суффиксом Директива»

James Macharia 21.11.2018 16:17

Да, к вашему имени класса должен быть прикреплен Directive. Обычно имя вашего класса должно заканчиваться типом класса. Например: класс компонента должен иметь имя: MyButtonComponent, директива должна быть AddOurAnnouncementsDirective и так далее.

nircraft 21.11.2018 16:23

да, я только что добавил директиву к имени, теперь она предупреждает меня: «Селектор директивы« AddOurAnnouncementsPageDirective »должен иметь префикс« app »»

James Macharia 21.11.2018 16:29

Да, это ваши правила ts-lint, определенные в tslint.json. Вы можете добавить «приложение» в селектор EX: selector: 'app-ion-textarea[autosize]' или отключить его, удалив или изменив это правило в tslint.json. Это стандарт, когда селекторы директив используют приложение, вы также можете добавить к нему любое другое значение. Для Ex: "directive-selector": [ true, "attribute", ["myapp", "myname"], "camelCase" ], "component-selector": [ true, "element", ["myapp", "myname"], "kebab-case" ],

nircraft 21.11.2018 16:33

спасибо за постоянную обратную связь nkuma_12, я пробовал оба, и никаких изменений в ошибке

James Macharia 21.11.2018 16:42

попробуйте использовать `[appAutosize]` в качестве селектора для директивы. Селекторы в Angular не поддерживают комбинаторы: - селектор потомков (пробел) - дочерний селектор (>) - смежный родственный селектор (+) - общий родственный селектор (~)

nircraft 21.11.2018 16:47

Объявите директиву как одно из следующих: проверьте здесь: angular.io/api/core/Directive#selector имя-элемента: выберите по имени элемента. .class: Выбрать по имени класса. [атрибут]: выберите по имени атрибута. [attribute = value]: выбор по имени и значению атрибута. : not (sub_selector): Выбирать, только если элемент не соответствует sub_selector. selector1, selector2: выберите, если соответствует selector1 или selector2.

nircraft 21.11.2018 16:53

Другие вопросы по теме