Я получаю такую ошибку в моем 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'));
});
}
}
теперь я получаю такую ошибку: «Имя класса AddOurAnnouncementsPage должно заканчиваться суффиксом Директива»





У вашего класса нет названия. Бывший:
@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 должно заканчиваться суффиксом Директива»
Да, к вашему имени класса должен быть прикреплен Directive. Обычно имя вашего класса должно заканчиваться типом класса. Например: класс компонента должен иметь имя: MyButtonComponent, директива должна быть AddOurAnnouncementsDirective и так далее.
да, я только что добавил директиву к имени, теперь она предупреждает меня: «Селектор директивы« AddOurAnnouncementsPageDirective »должен иметь префикс« app »»
Да, это ваши правила 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" ],
спасибо за постоянную обратную связь nkuma_12, я пробовал оба, и никаких изменений в ошибке
попробуйте использовать `[appAutosize]` в качестве селектора для директивы. Селекторы в Angular не поддерживают комбинаторы: - селектор потомков (пробел) - дочерний селектор (>) - смежный родственный селектор (+) - общий родственный селектор (~)
Объявите директиву как одно из следующих: проверьте здесь: angular.io/api/core/Directive#selector имя-элемента: выберите по имени элемента. .class: Выбрать по имени класса. [атрибут]: выберите по имени атрибута. [attribute = value]: выбор по имени и значению атрибута. : not (sub_selector): Выбирать, только если элемент не соответствует sub_selector. selector1, selector2: выберите, если соответствует selector1 или selector2.
укажите имя для вашего класса, как подсказывает ошибка.
export class MyClassNameHere