Size: a a a

Советский Angular

2020 December 07

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
Вертихвост キバ 🏡🦊
Москва-Сити: 120 метров за 86 млн ($1.15M), + налоги и жкх 64к/месяц ($850)
Прайм Парк: 180 метров за 100 млн ($1.33M), + налоги и жкх 24к/месяц ($320)
Или вилла на Бали 🏖
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
Nikita 👩🏻‍💻💭
Или вилла на Бали 🏖
виллу можно и снять) они там не дорогие
источник

N👩

Nikita 👩🏻‍💻💭... in Советский Angular
Вертихвост キバ 🏡🦊
виллу можно и снять) они там не дорогие
Квартиру тоже снять можно же
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
Nikita 👩🏻‍💻💭
Квартиру тоже снять можно же
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
пока еще не смотрел)
источник

В

Владимир in Советский Angular
Вертихвост キバ 🏡🦊
пока еще не смотрел)
продает его, успевай))\
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
Владимир
продает его, успевай))\
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
дорого)
источник

В

Владимир in Советский Angular
эээхх.. а я уже в гости к тебе собрался в москоу сити
источник

DT

Dmitriy Teplov in Советский Angular
Genady
Понятно. Есть git чтоб глянуть на имплементацию?
например, у тебя есть динамическая форма, которая не захардкожена (настраивается юзером, приходит с сервера итп)
const form = {
 userId: { type: "string", config: {...}},
 productIds: { type: "numberArray", config: { options: [1, 2, 5], ... },
}


есть мапа, с какими типами какие компоненты использовать для контролов

const formControlsMap = {
 string: StringInputComponent,
 numberArray: SelectComponent,
}



Эти компоненты имплементируют общий абстрактный интерфейс, например

interface DynamicFormControl {
 @Input() readonly config: unknown;
 @Input() readonly formControl: FormControl; // или имплементит CVA
}


Создаётся дефолтный компонент-контейнер для контролов, который нужен для работы с динамическими контролами (в случае использования обсуждаемой выше либы), он также имплементит интерфейс DynamicFormControl



@Component({
 selector: "dynamic-form-control-host",
 template: "<ng-container *ngxComponentOutlet="component"></ng-container>"
})
export class DynamicFormControlHostComponent implements DynamicFormControl {
 @Input() readonly config: unknown;
 @Input() readonly formControl: FormControl;

 @Input() readonly component: DynamicFormControl;
}


В итоге у нас получается что-то такое:

@Component({
 template: "<dynamic-form-control-host
 *ngFor="let el of formElements"
 [formControl]="el.formControl"
 [config]="el.config"
 [component]="el.component"
></dynamic-form-control-host>",
})
class DynamicFormComponent {
 @Input() readonly form;

 formElements;

 ngOnChanges({ form }) {
   if (form) {
     this.formElements = this.formToElements(this.form);
   }
 }

 private formToElements(form) {
   ...
 }
}
источник

DT

Dmitriy Teplov in Советский Angular
Dmitriy Teplov
например, у тебя есть динамическая форма, которая не захардкожена (настраивается юзером, приходит с сервера итп)
const form = {
 userId: { type: "string", config: {...}},
 productIds: { type: "numberArray", config: { options: [1, 2, 5], ... },
}


есть мапа, с какими типами какие компоненты использовать для контролов

const formControlsMap = {
 string: StringInputComponent,
 numberArray: SelectComponent,
}



Эти компоненты имплементируют общий абстрактный интерфейс, например

interface DynamicFormControl {
 @Input() readonly config: unknown;
 @Input() readonly formControl: FormControl; // или имплементит CVA
}


Создаётся дефолтный компонент-контейнер для контролов, который нужен для работы с динамическими контролами (в случае использования обсуждаемой выше либы), он также имплементит интерфейс DynamicFormControl



@Component({
 selector: "dynamic-form-control-host",
 template: "<ng-container *ngxComponentOutlet="component"></ng-container>"
})
export class DynamicFormControlHostComponent implements DynamicFormControl {
 @Input() readonly config: unknown;
 @Input() readonly formControl: FormControl;

 @Input() readonly component: DynamicFormControl;
}


В итоге у нас получается что-то такое:

@Component({
 template: "<dynamic-form-control-host
 *ngFor="let el of formElements"
 [formControl]="el.formControl"
 [config]="el.config"
 [component]="el.component"
></dynamic-form-control-host>",
})
class DynamicFormComponent {
 @Input() readonly form;

 formElements;

 ngOnChanges({ form }) {
   if (form) {
     this.formElements = this.formToElements(this.form);
   }
 }

 private formToElements(form) {
   ...
 }
}
Я пока писал - успел запутаться

Но суть такая
источник

MZ

Maxim Zvyagintsev in Советский Angular
Посмотрите как круто)
Нужно потянуть за веревочку
https://codepen.io/jh3y/pen/dyXBKog
источник

S

Smooth Operator in Советский Angular
Maxim Zvyagintsev
Посмотрите как круто)
Нужно потянуть за веревочку
https://codepen.io/jh3y/pen/dyXBKog
я сначала подумал что на чистом css
а потом понял... на жсе...
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
Maxim Zvyagintsev
Посмотрите как круто)
Нужно потянуть за веревочку
https://codepen.io/jh3y/pen/dyXBKog
выглядит круто)
источник

G

Genady in Советский Angular
Dmitriy Teplov
например, у тебя есть динамическая форма, которая не захардкожена (настраивается юзером, приходит с сервера итп)
const form = {
 userId: { type: "string", config: {...}},
 productIds: { type: "numberArray", config: { options: [1, 2, 5], ... },
}


есть мапа, с какими типами какие компоненты использовать для контролов

const formControlsMap = {
 string: StringInputComponent,
 numberArray: SelectComponent,
}



Эти компоненты имплементируют общий абстрактный интерфейс, например

interface DynamicFormControl {
 @Input() readonly config: unknown;
 @Input() readonly formControl: FormControl; // или имплементит CVA
}


Создаётся дефолтный компонент-контейнер для контролов, который нужен для работы с динамическими контролами (в случае использования обсуждаемой выше либы), он также имплементит интерфейс DynamicFormControl



@Component({
 selector: "dynamic-form-control-host",
 template: "<ng-container *ngxComponentOutlet="component"></ng-container>"
})
export class DynamicFormControlHostComponent implements DynamicFormControl {
 @Input() readonly config: unknown;
 @Input() readonly formControl: FormControl;

 @Input() readonly component: DynamicFormControl;
}


В итоге у нас получается что-то такое:

@Component({
 template: "<dynamic-form-control-host
 *ngFor="let el of formElements"
 [formControl]="el.formControl"
 [config]="el.config"
 [component]="el.component"
></dynamic-form-control-host>",
})
class DynamicFormComponent {
 @Input() readonly form;

 formElements;

 ngOnChanges({ form }) {
   if (form) {
     this.formElements = this.formToElements(this.form);
   }
 }

 private formToElements(form) {
   ...
 }
}
Ну я так и понял, стандартная проблема, с динамикой. В старом ангуляре, тоже самое решали своими граблями.
источник

И

Игорь Валерьевич... in Советский Angular
Вот такая ошибка, после добавления svg в компоненту
источник

AS

Anton Shvets in Советский Angular
Игорь Валерьевич
Вот такая ошибка, после добавления svg в компоненту
перезапусти сборку
источник

И

Игорь Валерьевич... in Советский Angular
Anton Shvets
перезапусти сборку
не помагает)
источник

И

Игорь Валерьевич... in Советский Angular
источник

И

Игорь Валерьевич... in Советский Angular
Вот сама свгшка
источник