Posso rivedere la slide con le indicazioni per postare offerte di lavoro?
Certamente. Sono disponibili sul mio account SlideShare: https://www.slideshare.net/fabio_biondi/reactive-forms-in-angular-for-examples
Come posso gestire i gruppi di radio per ricevere una value custom utilizzando un reactive forms?
Non sono certo di aver capito la domanda ma se la necessità è quella di inserire un form control totalmente personalizzato nei behaviors o nella gestione del model (come presumo nel tuo caso, o nel caso di un color-picker, date-picker, googlemap-selector, ecc.) è possibile creare un nuovo componente che implementi ControlValueAccessor, creando, in questo modo, un nuovo custom control che si integra perfettamente con il sistema di validazione previsto da Angular. Qualcosa tipo: oppure Niente di così complesso ma non è banale descrivere tutto il processo necessario per la loro creazione in questa risposta. Su Google trovi diversi articoli e documentazione sul tema (Angular ControlValueAccessor).
Da quale versione di Angular è applicabile quanto spiegato?
Dalla versione 2 in poi.
Dato che anche React non ti dispiace, cosa usi per sviluppare form con quel framework? Noi, in azienda, usiamo Formik. Se lo conosci, cosa ne pensi?
Premetto che, in generale, preferisco ridurre al minimo le dipendenze da librerie esterne per non aggiungere debito tecnico, a meno che non sia davvero necessario. Ad ogni modo, Formik non l'ho mai utilizzato in produzione ma mi sono letto un po' di documentazione e mi ricorda molto i form template driven di Angular. Tuttavia queste librerie mi fanno sempre molta paura. Esce una nuova versione e potrei essere a rischio di breaking changes su decine e centinaia di componenti. Tu potresti dirmi: “non sono mica costretto ad aggiornare la libreria!” Vero fino ad un certo punto. React sta introducendo un sacco di novità interessanti e per aggiornare il tuo progetto all'ultima release di React potresti essere costretto ad dover aggiornare anche Formik all'ultima release affinché sia compatibile. Quindi, quando utilizzo React preferisco scrivere tutta la logica dei form “a manina” e avere totale controllo. Piuttosto creo io delle astrazioni e dei componenti riutilizzabili. Devo ammettere che nel caso in cui l'applicazione abbia al suo interno una prevalenza di form, anche molto complessi, probabilmente la mia scelta ricadrebbe su Angular, eccetto il caso in cui non debba necessariamente sfruttare React per alcune delle sue peculiarità. Sono dell'idea che Angular e React in molti scenari possano essere quasi “intercambiabili” ma ci sono anche situazioni (legate al tipo progetto, skills del team, performance, tempistiche, budget, ...) in cui uno dei due potrebbe essere la scelta più appropriata e prevalere sull'altro.
Non si perde la leggibilità del codice? L' utilizzo di solo javascript, come in react, semplifica la lettura
Per questo motivo esistono due tipologie di form in Angular: i template-driven form, quasi totalmente creati e gestiti in modo dichiarativo, direttamente nel template HTML quasi senza la necessità di scrivere una riga di JS e i reactive form che fanno largo uso invece di Observable e RxJS. Quest'ultima è una dipendenza fondamentale di Angular e, di conseguenza, tanto vale studiarla e sfruttarne al massiamo l'enorme potenzialità. Comunque, in Angular, potresti tranquillamente gestire i form totalmente in JS (alla React per intenderci), escludendo le dinamiche previste dal framework, ma non avrebbe molto senso. Gestire le dinamiche di form molto articolati può essere davvero complicato e tedioso in vanilla JS / React e creare codice mostruoso (tutt'altro che leggibile). Al contrario, i Reactive Forms offrono un pacchetto di funzionalità e astrazioni che inevitabilmente si traducono in una maggiore produttività e un minor rischio di introdurre bug. Potrei riciclare una frase che solitamente applico a Redux e al concetto di gestione stato applicativo. I Reactive Forms non semplificano la gestione dei form in assoluto, ma rende decisamente più semplice la gestione di scenari molto complessi.
Reactive form può essere usato con AngularJs (1.x)? È consigliabile usarlo?
No mi spiace. AngularJS prevede solo i template driven forms, da cui Angular 2+ ha preso ovviamente spunto.
Quando inserire logica nel constructor e quando nell'on init?
Sarebbe preferibile delegare al costruttore solo le injection dei servizi. Tuttavia, per comodità ed evitare di trovarmi un metodo in più nella mia classe, devo ammettere che inserisco spesso nel costruttore anche inizializzazioni di proprietà, chiamate al server nei componenti stateful e così via. La differenza sostanziale tra costruttore e ngOnInit invece la si può notare in componenti che accettano proprietà in Input. Quest'ultime infatti non saranno disponibili nel costruttore ma solo nell'hook ngOnInit. Quindi, se il tuo componente appena istanziato dovrà effettuare delle operazioni in fase di creazione basate sulle proprietà in Input, dovrà necessariamente utilizzare ngOnInit per recuperare tali valori (a meno che non siano asincroni e in tal caso sarà utile l'hook ngOnChanges)
Cosa ne pensi di redux form in react rispetto a quelli che hai spiegato?
20+ kilobyte gzipped nel progetto e, a meno che non sia cambiato qualcosa di recente e non ne sia al corrente, rischia di penalizzare notevolmente le performance dell'app, visto che ad ogni digitazione vengono invocate azioni, tutti i reducer ecc. Inoltre: 1) non ho mai sentito l'esigenza di utilizzare questa libreria. Non mi ha mai convinto e 2) come già spiegato in un'altra risposta, sono dell'idea che meno dipendenze inseriamo nel progetto e meno saremo a rischio da eventuali (futuri) breaking changes, colli di bottiglia, performance issues causati dalla lib, ecc. In React preferisco gestire i form in vanilla JS e semplicemente al submit (o quando necessario) invocare un'azione di Redux (o nel parent) che si occuperà di aggiornare lo stato applicativo. Infine, non sento la necessità di gestire lo stato del form a livello globale e preferisco farlo localmente, a meno che non debba mettere in cache anche i valori di form inseriti parzialmente per poi riproporli in un secondo momento o altri scenari particolari.