
Sergey
28.09.2016
13:27:00
Тогда круто
Просто в другом чатике кто-то писал, что сам пример не работает на релизной версии

Alexey
28.09.2016
13:33:55
я не копировал весь пример, только часть с providers: []
и выпилил хак

Google

Vladimir
28.09.2016
14:00:30
А вот с архитектурной точки зрения, лучше storage сделать статическим классом или передавать через di?

Алексей
28.09.2016
14:07:55

Sergey
28.09.2016
14:14:28
Наверное как добавить в cli - тогда просто склонить реп cli и сделать npm link

Oleg
28.09.2016
14:24:21
кто работал из [DomSanitizer](https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html)
одно дело когда нужно сказать этот iframe нормальный, можешь вставлять - в одном компоненте но когда их уже 3 или больше и отрабатывать еще стили и тд как то DRY
есть вариант чтоб в app.modules для всех задать глобально вот доверенный урл и все что от него приходит можно парсить и не бояться

Алексей
28.09.2016
14:26:08


Oleg
28.09.2016
14:30:31
ну вот в админке создал новость, там прикрепил картинку и добавил текста
по апи получил список новостей и посторил их
картинку показало но к ней прилагались стили как например размер а ангуляр вырезает их, и в итоге картинка не в том размере
такое уже делал из iframe
перед тем как стоил дум я проганял через DomSanitizer каждый кусок html (iframe) и лишь после того кидал в переменную через которую уже ngfor делал
+ все это делао приходится вставлять вот так
<div [innerHTML]=news.description></div>
innerHTML потому что приходит мне часть разметки html
если сделать через {{}} то вставится как текст

andretshurotshka?❄️кде
28.09.2016
14:46:11
Как экстендить RouterOutlet?

Sergey
28.09.2016
14:48:34
Забирайте книгу сегодня бесплатно https://leanpub.com/router/c/connect

Igor
28.09.2016
14:50:59
книга свежая?
а то я некоторые ответы только в его блоге находил

Sergey
28.09.2016
14:56:50
Книгу он закончил может пару недель тому назад, так что свежее не бывает

Google

Sergey
28.09.2016
14:57:57
Там вроде нет preloading, но он вообще вот только в beta попал пару дней назад
Слайды с его же доклада
https://docs.google.com/presentation/d/1kp7sbxcEpTaOEgW95RHMFMxsihGdk-8Nlug62PDjgFw/edit#slide=id.g1721703982_0_771

Igor
28.09.2016
15:06:22
ага увидел что 23 сентября
спасибо за линк! оч круто

Lends
28.09.2016
15:17:31
кому влома на сайт заходить)

Sergey
28.09.2016
15:27:31
Ну это лучше убрать. Потому как книга все же платная по факту. Тут уже это обсуждалось.
Ну или убрать позже

Lends
28.09.2016
15:28:06
ну ок-ок)

Алексей
28.09.2016
23:52:25
Ну и для тех кто второй день подряд игнорирует Angular Connect - видео с двух потоков и
Keynote c предыдущего дня! ( он не вошел в запись )
https://www.youtube.com/watch?v=xQdV7q3e_2w
Track One
https://www.youtube.com/watch?v=HVz9CYTSFek
Track Two
https://www.youtube.com/watch?v=KekdTN2IkZg

andretshurotshka?❄️кде
29.09.2016
02:04:45

Oleg
29.09.2016
07:31:29
https://angular.io/docs/ts/latest/guide/security.html
Content-Security-Policy
Верно понял что если добавить этот заголовок то не нужно будет запускать DomSanitizer

Алексей
29.09.2016
07:34:04

Oleg
29.09.2016
07:40:35
в 99.9% да.. а какой кейс?
есть идеи как тогда сказать что вот по таким урлам можна доверять? или хотя бы глобально отлючить эту защиту

Алексей
29.09.2016
07:44:54

Oleg
29.09.2016
07:46:29
ну например хотя бы задать для такого урла а все другие пусть проверяет /api/**

Алексей
29.09.2016
08:02:05

Oleg
29.09.2016
08:11:24
Вот пример сервиса, их много и для каждого свой /api/url
Можна например в каждом сервисе сделать так
this.safe.bypassSecurityTrustUrl(this.benefits_url)Или что то в этом духе
А в компоненте уже получаю результат из сервиса который "помечен" как защищен и без костылей вставлять контент
@Injectable()
export class BenefitsService {
readonly benefits_url = '/api/benefits'
constructor(private http: Http, private safe: DomSanitizer) { }
getAll(): Observable<IBenefits> {
return this.http.get(this.benefits_url)
}
get(slug: string): Observable<IBenefit> {
return this.http.get(`${this.benefits_url}/${slug}`)
}
}


Алексей
29.09.2016
08:12:21
// This seems to work to disable the sanitizer (i.e. you know all inputs are safe):
import { Injectable, provide } from '@angular/core';
import { DomSanitization, SecurityContext } from '@angular/platform-browser';
@Injectable()
export class NoSanitization {
sanitize(ctx: SecurityContext, value: any): string {
return value;
}
}
export const NO_SANITIZATION_PROVIDERS: any[] = [
provide(DomSanitization, { useClass: NoSanitization }),
];
// Then import and add NO_SANITIZATION_PROVIDERS to bootstrap.
Это правда выключит все ( но можно поиграться и сделать данный вариант чуть секюрнее )

Google

Oleg
29.09.2016
08:24:23
Зараз это так решаю
ngOnInit() {
this.sub = this.StreamsService.getAll().subscribe(result => {
result.items.forEach((stream, index, streams_arr) => {
streams_arr[index].code_stream = this.DomSanitizer.bypassSecurityTrustHtml(stream.code_stream)
this.streams = streams_arr
})
})
}в code_stream лежит разметка iframe
перебираю и помечаю это поле
и потом можна вставлять в темлпейт
А хотелось бы еще на уровне сервиса пометить тот урл по которому он будет фетчить данные и все что он получит уже safe и в компоненте не прийдется делать перебор


Y
29.09.2016
08:38:21
Всем привет. Вопрос к тем, кто знаком с OData v4.
Есть ли библиотеки, которые позволяют формировать запросы в соответствии с этим протоколом? Т.е. меня конкретно интересует автоматическое создание сервисов в соответствии с описанием в metadata.
Если не совсем понятно - приведу аналогию. Есть Swagger; это по сути спецификация к REST. Есть целый набор библиотек, которые пожирая эту спецификацию формируют набор сервисов с готовыми запросами. Вот я ищу примерно такую же вещь, только для протокола OData и под Angular 2.

Vadim
29.09.2016
11:10:00
Ребят, каким образом можноустановить значение поля в model-driven form уже после того, как она была инициализирована?

Igor
29.09.2016
11:11:48

Vadim
29.09.2016
11:12:37
Вот не смог пока достверный синтаксис нагуглить.

Sergey
29.09.2016
11:15:12

Igor
29.09.2016
11:15:28

Vadim
29.09.2016
11:17:04
Спасибо.

Igor
29.09.2016
11:18:55
нашел вот тут, если что
http://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/

Sergey
29.09.2016
11:19:53
Так а что искать, если все есть просто в автодополнении!?

Vladimir
29.09.2016
11:20:13
можно из темплейта как-то получить доступ к статическому классу?

Igor
29.09.2016
11:20:19

Vladimir
29.09.2016
11:20:21
точнее к статическому филду у класса

Sergey
29.09.2016
11:22:15
Мы говорим про отдельный класс или это компонент?

Oleg
29.09.2016
12:38:37
Всем привет
The page at '.../posts' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '..../api/1.0/posts/'. This request has been blocked; the content must be served over HTTPS.
Кто-то сталкивался с такой проблемой? Прочитал что нужно еще настройки передавать с гетом, но найти не могу
getPosts(): Promise< Post[] > {
//return Promise.resolve(POSTS);
return this.http.get(this.postUrl)
.toPromise()
.then( response => response.json() as Post[] )
.catch(this.handleError);
};
Все, это я затупил
postUrl прописал с http

Google

Alexey
29.09.2016
13:02:29
Делюсь своими впечатлениями после первой попытки покрыть тестами UI компоненты - ng2 тут торт. Отличные встроенные инструменты для тестирования, модульность и DI упрощают написание тестов невероятно, UI элементарно тестируется unit тестами покрывая все браузерные взаимодействия пользователя. Я прям доволен в общем.

Sergey
29.09.2016
13:05:02

THE
29.09.2016
13:07:20
Добрый вечер...
Посоветуйте книгу по ангуляру или сайт
Понимаю англ и рус...

Igor
29.09.2016
13:09:44

THE
29.09.2016
13:10:42
Благодарю

andretshurotshka?❄️кде
29.09.2016
13:22:12

Alexey
29.09.2016
13:26:27
уже после посмотрел доклад с angular connect по тестированию и по сути не узнал ничего нового
все в доке есть
единственный неочевидный момент был с тем как из UI сымитировать заполнение инпута
el.value = newValue
el.dispatchEvent(new Event('input'))
el: HTMLElement
в доке этого нет
т.е можно конечно через conponentInstance поменять проперти которое на [(ngModel)] биндится, но хочется имеено UI протестировать как реальный пользователь в браузере

Sergey
29.09.2016
13:40:07
?

Vladimir
29.09.2016
19:10:35
внимание, вопрос!
Ангуляр делает redraw дива, если изменился параметр или просто его обновляет?
т.е.
у меня у дива [style.top]="item.x", при изменении x он просто стиль поменяет или отрисует заного?

Vadim
29.09.2016
23:04:17
Хороший вопрос

Google

Vadim
29.09.2016
23:05:23
Скорее всего, отрисует заново, но прямой пруф дать не смогу.

Alexey
30.09.2016
04:54:59
Стиль поменяет конечно, только надо не забыть указывать юниты [style.top]="item.x + 'px'"
Хотя что ты подразумеваешь под redraw, если браузерный repaint то да, он произойдет. Если имеешь в виду что в доме произойдет замена дива на новый то нет, div останется тот же.
Компилятор ангуляра из шаблона генерирует js код в котором будет выражение вида div_el.style.top = context.item.x + 'px';
А с AOT компилятором будет сгенерен TS и при компиляции TS ещё и проверит все эти выражение
На типы и вообще есть ли в компоненте item.x
Будет что-то типа let context: MyComponent
Если я правильно понял из доки то изменять Dom структуру динамически, создавать/удалять ноды могут только директивы с префиксом * - например *ngFor, *ngIf

Vladimir
30.09.2016
08:25:41
А в ангуляре в темплейтах есть простой loop от 1 до n?

Lends
30.09.2016
08:26:24
+1 к вопросу... пока нашёл только костыли...
конечно можно директивку запилить... но всё равно велосипед

Sergey
30.09.2016
08:30:57
http://stackoverflow.com/questions/36354325/angular-2-ngfor-using-numbers-instead-collections

Lends
30.09.2016
08:33:26
самая большая энциклопедия костылей, спасибо)

Igor
30.09.2016
08:36:16
кстати, что лучше внутри *ngFor юзать, #i или let i?

Lends
30.09.2016
08:38:44
https://angular.io/styleguide
Эта группа больше не существует