Size: a a a

Angular - русскоговорящее сообщество

2021 February 17

IP

Ilya Platonov in Angular - русскоговорящее сообщество
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Ilya Platonov
Подскажите, как решить проблему:
У меня ест класс:
export class ExtendedList<T>{}
Я его использую в разных компонентах приложения и передаю в него разный типа данных, к примеру:
public extendedList = new ExtendedList<Group>()
Или
public extendedList = new ExtendedList<DocumentInBox>();
В самом классе у меня ест метод, в котором, я получаю ошибку:  Property 'contractSignDate' does not exist on type 'T'
Как можно решить проблему с вариативным полем?
а где у свойство 'contractSignDate' определено? И что за класс на скрине?
источник

YS

Yura Shtyba in Angular - русскоговорящее сообщество
Yurii Dushenko
Добрый день. Подскажите пожалуйста кто нибудь делал что-то подобное?

У меня есть мат-таблица и мне нужно сделать следующие задачи

1. Менять местами столбцы таблицы через драг анд дроп

2. Добавлять в таблицу столбец через драг анд дроп. Тоесть есть кнопка я ее тащу в таблицу и она становится столбцом

2.1. Вставить между существующими

2.2. заменить столбец если я при перетаскивании накладываю поверх существующего
думаю вам придется отказаться от мат-таблицы, и реализовывать это своими силами на основе angular cdk drag and drop, но возможно есть какие-то либы для этого
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
Oleg Safonov
а где у свойство 'contractSignDate' определено? И что за класс на скрине?
contractSignDate это свойсто из DocumentInBox
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Ilya Platonov
contractSignDate это свойсто из DocumentInBox
а this.list как определено?
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
private list: T[];
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Ilya Platonov
private list: T[];
ну в этом класс то работа идёт с T типом, а не конкретным
Вы не можете в нём обращаться к 'contractSignDate', вдруг там вообще другой тип?

Вероятно нужно перенести метод в более специфичный класс

Ну или объясните задачу)
источник

АС

Андрей Сергеевич... in Angular - русскоговорящее сообщество
Все логично вы обращаетесь к полю которого не существует в переданном типе, или множестве типов , если у вас сделано дженериком можете обойти ошибку через строгое указание используя as.
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
ну Т-тип, он же обобщеный, по идее должен подхватываться тип, который передается?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Ilya Platonov
ну Т-тип, он же обобщеный, по идее должен подхватываться тип, который передается?
Это не так работает немного)
источник

YS

Yura Shtyba in Angular - русскоговорящее сообщество
Ilya Platonov
Подскажите, как решить проблему:
У меня ест класс:
export class ExtendedList<T>{}
Я его использую в разных компонентах приложения и передаю в него разный типа данных, к примеру:
public extendedList = new ExtendedList<Group>()
Или
public extendedList = new ExtendedList<DocumentInBox>();
В самом классе у меня ест метод, в котором, я получаю ошибку:  Property 'contractSignDate' does not exist on type 'T'
Как можно решить проблему с вариативным полем?
export class ExtendedList<T extends  {contractSignDate: string}>{}
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
Yura Shtyba
export class ExtendedList<T extends  {contractSignDate: string}>{}
уже пытался, не работает
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Yura Shtyba
export class ExtendedList<T extends  {contractSignDate: string}>{}
Это если свойство везде присутствует и всегда
источник

АС

Андрей Сергеевич... in Angular - русскоговорящее сообщество
Yura Shtyba
export class ExtendedList<T extends  {contractSignDate: string}>{}
И так не правильно.
источник

YS

Yura Shtyba in Angular - русскоговорящее сообщество
Ilya Platonov
уже пытался, не работает
у вас это свойство есть не во всех типах?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Ilya Platonov
уже пытался, не работает
Если Вы пытаетесь сделать обобщённый класс, а внутри ожидаете доступ к contractSignDate, то это уже не обобщённый класс.
Либо это обобщённый класс для типов, у которых это свойство есть
источник

IP

Ilya Platonov in Angular - русскоговорящее сообщество
Yura Shtyba
у вас это свойство есть не во всех типах?
Верно
источник

YS

Yura Shtyba in Angular - русскоговорящее сообщество
ну тогда вам нужен другой подход
источник

YS

Yura Shtyba in Angular - русскоговорящее сообщество
Oleg Safonov
Если Вы пытаетесь сделать обобщённый класс, а внутри ожидаете доступ к contractSignDate, то это уже не обобщённый класс.
Либо это обобщённый класс для типов, у которых это свойство есть
да, это уже не обобщённый класс
источник