@angular2Эта группа больше не существует

Страница 95 из 179
Алихей
30.11.2016
14:12:52
думаю логичнее если бы все можно было из параметров в тело конструктора перенести.

marat
30.11.2016
14:12:53
тут в апендиксе есть пример

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

Алихей
30.11.2016
14:15:12
Просто в сервис вынес методы для работы с бэком, через di передал Http. А как работать с этим сервисом без di вообще не могу понять.

Google
Алихей
30.11.2016
14:34:41
@malborov сорри, но я что то не понял, как DI удовлетворяются вручную. В примере на странице это делается через метод injector.get но откуда его взять?

marat
30.11.2016
14:37:03
Удовлетворить зависимости можно: через di, через ioc контейнер

Через di: в конструкторе сервиса перечисляются зависимости и ангулар их удовлетворяет при создании сервиса

Если сервис создается вручную, то зависимости необходимо передать вручную

Через ioc контейнер (в данном случае injector ангулара): получить контейнер в конструкторе сервиса и запросить у него необходимые сервисы. В случае ангулара передать injector можно через di

Алихей
30.11.2016
14:41:28
Спасибо, попробую что нибудь сделать

marat
30.11.2016
14:41:44
Пожалуйста

Nyurgun
30.11.2016
15:00:27
Добрый день, можно ли задать вопрос

Fayozjon [CybernatiC]
30.11.2016
15:04:17
Лол

Ночь ведь

Maksim
30.11.2016
15:05:14
Брад Грин бы расстроился )

Google
Fayozjon [CybernatiC]
30.11.2016
15:06:07
У нас тут мат запрещен тоже?

Nyurgun
30.11.2016
15:08:16
Как правильно использовать внутри service(http.get) params.set(возможно append(?)) для массива вида localhost/test?array[0].parameter1="значение" & array[0].parameter2="значение" и тд.

Anton
30.11.2016
15:21:02
есть компонент, который в своем шаблоне должен выводить своих наследников, задумка такая @Component({ selector: 'dt-filter', template: <div [ngSwitch]="column.filter"> <dt-filter-select *ngSwitchCase="'select'" [filters]="'filters'"></dt-filter-select> <!-- other components --> </div> }) export class DTFilter { @Input() filters: any; } @Component({ selector: 'dt-filter-select', template: 'this is select!' }) export class DTFilterSelect extends DTFilter { } // all other filter types ... @NgModule({ imports: [CommonModule], exports: [ DTFilter ], declarations: [ DTFilter, DTFilterSelect, /* other classes */] }) export class DTFilterModule { } но полифилы ругаются, что в фунции __extendsFn базовый класс undefined - что я делаю не так? или это в принципе невозможно сделать таким путем?

хмм, если классы запихнуть в один файл, то работает, странно

вопрос снят

Eight
30.11.2016
15:33:56
немаленький такой вопрос

Anton
30.11.2016
15:36:13
черт, @Input не наследуется

marat
30.11.2016
15:39:11
черт, @Input не наследуется
т.е.? в дочернем классе родительское поле без декоратора?

Anton
30.11.2016
15:41:44
поля вообще нет, насколько я вижу

marat
30.11.2016
15:43:01
поля вообще нет, насколько я вижу
а если убрать декоратор, то есть?

поля вообще нет, насколько я вижу
https://medium.com/@ttemplier/angular2-decorators-and-class-inheritance-905921dbd1b7#.1arjzf1gu

тери про наследование декораторов

если коротко, то наследование не поддерживается, но это можно обойти

Fayozjon [CybernatiC]
30.11.2016
16:01:09
О поддержка инстант вью

marat
30.11.2016
16:27:57
Ага, классная штука

Fayozjon [CybernatiC]
30.11.2016
16:28:34
Как у себя это реализовать?

andretshurotshka?❄️кде
30.11.2016
16:28:48
Никак

Fayozjon [CybernatiC]
30.11.2016
16:28:54
:(

Печально

Павел доки на след неделе обещал

Google
Anton
30.11.2016
16:29:28
точняк, видел же эту статью пару дней назад, дырявая голова

Алихей
30.11.2016
16:34:54
И снова вечер добрый. Я добавил ссылку на планкер, что бы может кто то сможет показать как правильно инжектить зависимости не через параметры конструктора? Совсем не выходит у меня. В вопросе написано в каком файле надо править если решитесь. https://toster.ru/q/375838

Алихей
30.11.2016
16:40:49
просто писал быстро что бы пример накидать. Смысл рабочей задачи в том что на страницах есть много одинаковых задач, я решил их функционал отнаследовать от родительского класса, но споткнулся на том что все ломается на зависимостях типа Http в родительском классе

marat
30.11.2016
16:42:22
команда ангула проделала большую работу в плане di

Алихей
30.11.2016
16:42:28
А по поводу инжекта в теле конструктора? Пробовал через ReflectiveInjector не помогло

marat
30.11.2016
16:42:34
не вижу смысла этим di принебрегать

а пробовали инджектить сам сервис в конструкторе компонента? ангулар сам удовлетворит зависимости сервиса

Алихей
30.11.2016
16:43:45
За di им отдельное спасибо, но именно он и ломает красоту ООП. Зачем же его в JS тогда добавлять? Можно было бы и на прототипах то же самое сделать.

Eight
30.11.2016
16:44:17
Как сделать автодополнение?

marat
30.11.2016
16:47:27
За di им отдельное спасибо, но именно он и ломает красоту ООП. Зачем же его в JS тогда добавлять? Можно было бы и на прототипах то же самое сделать.
для меня как для бэкендщика появление di в js это огромный прорыв. использвоние прототипирования там где нужен di это ад

Алихей
30.11.2016
16:51:20
Да, я тоже не знаю как реализовать этот di руками. Но спасибо, поддержали как смогли)

Sergey
30.11.2016
16:53:02
За di им отдельное спасибо, но именно он и ломает красоту ООП. Зачем же его в JS тогда добавлять? Можно было бы и на прототипах то же самое сделать.
// и как сделать так что бы ничего передавать не надо было вообще? (Это важнее) Есть такой принцип - явное лучше неявного. Так вот, как раз конструктор di явный. Ты знаешь что можешь использовать в своем классе, поэтому тебе нужно повторить конструктор, а не использовать super()

marat
30.11.2016
16:54:51
у меня планкер очень много вопросов вызывает. мне кажется вы первый день на ангуларе пишите

Алихей
30.11.2016
16:55:51
Я вообще форкнул этот проект что бы написать на нем один файл и одну правку.

marat
30.11.2016
16:55:55
https://angular.io/docs/ts/latest/guide/dependency-injection.html по di для начала

Я вообще форкнул этот проект что бы написать на нем один файл и одну правку.
в планкере есть дефолтные проекты на ангуларе, не надо шлак форкать

Google
Vadim
30.11.2016
16:57:53
Ты, кстати, когда из отпуска выйдешь?

marat
30.11.2016
16:58:14
https://plnkr.co/edit/c65mTCZ1oYDGE1G0QMlM

Vadim
30.11.2016
16:58:28
Спасибо

marat
30.11.2016
16:58:37
возле new стрелочка и можно выбирать

Ты, кстати, когда из отпуска выйдешь?
в пн точно, но может и в пт появлюсь

https://angular.io/docs/ts/latest/guide/dependency-injection.html по di для начала
по di ангулара чуть подробнее от паскаля

http://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html

Алихей
30.11.2016
17:04:10
http://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html
По всем этм ссылкам уже прошелся. Спасибо.

У меня не верно работает только вот эта часть let injector = ReflectiveInjector.resolveAndCreate([ Router ]); this.router = injector.get(Router); Потому что я вынес ее в тело из параметров. Как это лечится не понятно

Lends
30.11.2016
17:08:01
зачем переопределять injector?

Алихей
30.11.2016
17:09:52
зачем переопределять injector?
эм, переопределять? Ну потмоу что вызов в классе типа @Injector('router') Router; Результата не дал

Lends
30.11.2016
17:10:18
я про let решил похоливарить...

Алихей
30.11.2016
17:10:33
лучше в другой раз

Алексей
30.11.2016
17:15:18
я про let решил похоливарить...
Это в pro.js группу это уже не Angular 2

Алихей
30.11.2016
17:16:21
@Ai_boy а ты не можешь подсказать как можно заинжектить зависимости не через параметры конструктора?

Vadim
30.11.2016
17:18:54
Зачем тебе это?

Что стандартными средствами мешает объявить?

Алексей
30.11.2016
17:21:22
@Ai_boy а ты не можешь подсказать как можно заинжектить зависимости не через параметры конструктора?
Если нужно заинджектить в ES5 стиле то делать это нужно так ng.core.Component({ selector: 'cmp' }). View({ template: '{{greeting}} world!' }). Class({ constructor: [Service, function(service) { this.greeting = service.greeting(); }] })

@Ai_boy а ты не можешь подсказать как можно заинжектить зависимости не через параметры конструктора?
Если для тестирования - то просто создаешь instance и передаешь в параметр new Component(new Service())

Алихей
30.11.2016
17:22:05
Родительский класс. В нем методы которые используются во всех страницах. От родителя наследуются классы для создания страниц. Все замечательно, только зависимость в di все портит. Router не прокатывает.

Google
Алихей
30.11.2016
17:22:59
Если нужно заинджектить в ES5 стиле то делать это нужно так ng.core.Component({ selector: 'cmp' }). View({ template: '{{greeting}} world!' }). Class({ constructor: [Service, function(service) { this.greeting = service.greeting(); }] })
А в ts? что нибудь подобное есть? Уже писал let injector = ReflectiveInjector.resolveAndCreate([ Router ]); this.router = injector.get(Router); что нибдь типа этого

ТОлько вот это не работает

Алексей
30.11.2016
17:23:21
Родительский класс. В нем методы которые используются во всех страницах. От родителя наследуются классы для создания страниц. Все замечательно, только зависимость в di все портит. Router не прокатывает.
Ага - тоесть если правильно понял у тебя есть базовый класс где инжектится роутер и ты от него наследуешься и нужно передать этот Router

Алихей
30.11.2016
17:25:32
Ага - тоесть если правильно понял у тебя есть базовый класс где инжектится роутер и ты от него наследуешься и нужно передать этот Router
Да. Нужно в наследников передать методы этого класса, в ожном из них мы можем менять текущий путь. Просто хочелось бы что бы наследники без особой надобности не перезаписывали эти методы.

Алихей
30.11.2016
17:27:50
https://toster.ru/q/375838 Тут и описание и все. Править если что только в двух указанных файлах. Остальное было тупо форкнуто.

Алексей
30.11.2016
17:29:55
В классе наследнике напиши constructor(private _http: Http) { super(_http); }

Там в ответах тоже уже написали

Алихей
30.11.2016
17:32:53
Да, это работает) Видимо так и оставлю. Просто не хотелось везде таскать с собой зависимость в виде Router

Спасибо @Ai_boy

Алексей
30.11.2016
17:36:52
если коротко, то наследование не поддерживается, но это можно обойти
Увы нельзя - в том что способе что в статье написали - отваливаеться AOT шаблонов. На данный момент наследования декораторов нет. Никаких. Никак и на это не стоит базироваться.

Пока решения не придумали совет только 1 копипастить декораторы @Input, @Output, @Component и т.п.

Алексей
30.11.2016
17:41:30
Где то обсуждалось?
Isssue есть и да. Обсуждалось

Чуть попозже найду и скинуть в чат

Страница 95 из 179

Эта группа больше не существует Эта группа больше не существует