IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

ERREUR : Object is possibly 'null'.ts(2531)


Sujet :

Angular

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut ERREUR : Object is possibly 'null'.ts(2531)
    Bonjour,

    Je rencontre cette erreur dans un controller qui gère un formulaire quand je récupère la valeur de chaque champ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    export class FormBookComponent implements OnInit {
      bookForm!: FormGroup;
     
      constructor(
        private formBuilder: FormBuilder,
        private bookService: BookService,
        private router: Router) { }
     
      ngOnInit(): void {
        this.initFormBook();
      }
     
      initFormBook() {
        this.bookForm = this.formBuilder.group({
            title: ['', Validators.required],
            author: ['', Validators.required]
        })
      }
     
      onSubmitBookForm() {
    //erreur ici: Object is possibly 'null'.ts(2531) sur const title et const author
        const title= this.bookForm.get('title').value;
        const author = this.bookForm.get('author').value;
     
    ..........
    }
    Je ne comprends pas pourquoi je dois mettre aussi l'opérateur d'assetion "!" non null systématiquement sur toutes les variables de classes (ici "bookForm") alors qu'auparavant je n'avais pas besoin de faire ça. De plus je suppose que ça n'est pas très recommandé en cas de nullité justement

    Merci

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    enlève le : !


    il faut toujours déclarer: ReactiveFormsModule, dans le module du composant
    ou s'il n'y en a pas, dans app.module

  3. #3
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Merci pour ta réponse

    Le ReactiveFormModule est bien déclaré dans app.module dans mon cas.
    Par contre, si j'enlève le "!" angular me demande d'initialiser ce que je n'avais pas à faire avant, il faut dire que je travaillais sur une vieille version d'angular (6)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    supprime le dossier node_module
    npm i

  5. #5
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Salut,

    J'ai supprimé le dossier mais rien de concluant j'ai toujours le :

    Property 'bookForm' has no initializer and is not definitely assigned in the constructor.ts(2564)

  6. #6
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    (1) et avec : this.initFormBook(); dans le constructor ?

    (2)
    c de l'angular 6 ?

    (3)
    c'est bien : @angular/forms
    import { ReactiveFormsModule } from '@angular/forms';

    (4)
    sinon essaye le meme code dans un autre composant

  7. #7
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Re,

    1/ ne change rien

    2/ Je suis sur angular 11, mais j'ai eu des problèmes récemment avec npm 7.5.2 j'ai dû installer la version 6 suite à ce message
    Nom : npm.png
Affichages : 2388
Taille : 17,0 Ko
    Voici ce que donne un petit ng --version :
    Nom : Screenshot from 2021-03-01 17-16-49.png
Affichages : 2441
Taille : 13,7 Ko

    3/ voici mon import dans app.module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import { FormsModule, ReactiveFormsModule } from '@angular/forms';
    .................................
    imports: [
        BrowserModule,
        AppRoutingModule,
        FormsModule,
        ReactiveFormsModule
    ..........................
    4/ J'ai créé un autre projet et le problème est le même : voici les solutions proposées par le "quick fix"
    Nom : Screenshot from 2021-03-01 17-22-00.png
Affichages : 2413
Taille : 86,2 Ko
    Images attachées Images attachées  

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    (1)
    bah voilà c'est ça le probleme, la version de node
    parceque niveau Angular, il n'y a pas de raison que ça plante.


    faut installer node 12, c'est obligatoire. faut te concentrer la dessus..
    le JavaScript évolue, les packages également.... faut respecter les recommandations de version


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    |Angular CLI|       Angular      |            NodeJS            |TypeScript |
    |-----------|--------------------|------------------------------|-----------|
    |-          |2.x                 |6.0.x or later minor          |2.0.x      |
    |1.0.6      |4.x                 |6.9.x or later minor          |2.2.x      |
    |1.1.3      |4.x                 |6.9.x or later minor          |2.3.x      |
    |1.2.7      |4.x                 |6.9.x or later minor          |2.3.x      |
    |1.3.2      |4.2.x or later minor|6.9.x or later minor          |2.4.x      |
    |1.4.10     |4.2.x or later minor|6.9.x/8.9.x or later minor    |2.4.x      |
    |(1.5.6)    |5.0.x               |6.9.x/8.9.x or later minor    |2.4.x      |
    |1.5.6      |5.1.x               |6.9.x/8.9.x or later minor    |2.5.x      |
    |1.6.7      |5.2.x or later minor|6.9.x/8.9.x or later minor    |2.5.x      |
    |1.7.4      |5.2.x or later minor|6.9.x/8.9.x or later minor    |2.5.x      |
    |6.0.8      |6.0.x               |8.9.x or later minor          |2.7.x      |
    |6.1.5      |6.1.x               |8.9.x or later minor          |2.7.x      |
    |6.2.9      |6.1.x               |8.9.x or later minor          |2.9.x      |
    |7.0.7      |7.0.x               |8.9.x/10.9.x or later minor   |3.1.x      |
    |7.1.4      |7.1.x               |8.9.x/10.9.x or later minor   |3.1.x      |
    |7.2.4      |7.2.x               |8.9.x/10.9.x or later minor   |3.2.x      |
    |7.3.9      |7.2.x               |8.9.x/10.9.x or later minor   |3.2.x      |
    |8.0.6      |8.0.x               |10.9.x or later minor         |3.4.x      |
    |8.1.3      |8.1.x               |10.9.x or later minor         |3.4.x      |
    |8.2.2      |8.2.x               |10.9.x or later minor         |3.4.x      |
    |8.3.25     |8.2.x               |10.9.x or later minor         |3.5.x      |
    |9.0.7      |9.0.7               |10.13.x/12.11.x or later minor|3.6.x/3.7.x|
    |9.x        |9.x                 |10.13.x/12.11.x or later minor|3.6.x-3.8.x|
    |10.x       |10.x                |10.13.x/12.11.x or later minor|3.9.x      |
    |10.1.x     |10.1.x              |10.13.x/12.11.x or later minor|3.9.x/4.0.x|
    |10.2.x     |10.2.x              |10.13.x/12.11.x or later minor|3.9.x/4.0.x|
    |11.0.7     |11.0.x              |10.13.x/12.11.x or later minor|4.0.x      |
    |11.1.x     |11.1.x              |10.13.x/12.11.x or later minor|4.0.x/4.1.x|
    |11.2.x     |11.2.x              |10.13.x/12.11.x or later minor|4.0.x/4.1.x|



    (2)
    comment es tu passé de angular 6 à 11 sur ton projet ?

    le mieux est de créer un nouveau projet angular 11 et d'y inserer le code angular 6

  9. #9
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Ok, je suis en version 10.19 pour node, ça devrait passer pourtant non ? je vais quand même update. Merci

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    ça devrait le faire en 10.

    tu es sous quel os ?



    (2)
    tester un projet au hasard sur github

    par exemple:
    git clone https://github.com/cornflourblue/ang...ud-example.git
    npm i
    ng serve

    voir si ça plante ou pas ?

  11. #11
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Pour répondre à ta question, c'est à mon ancien travail que j'étais sous angular 6, du coup mon problème vient d'un PC perso que j'ai mis sous ubuntu et que j'ai voulu configurer pour faire du angular.
    Enfin maintenant j'ai ceci :
    Nom : Screenshot from 2021-03-01 18-23-52.png
Affichages : 2406
Taille : 27,2 Ko
    Mais ce n'est pas mieux. En tt cas la doc ubuntu est super pour installer node je donne le lien à tout hasard :
    https://doc.ubuntu-fr.org/nodejs.

    En regardant sut stackoverflow il y a une discussion qui à l'air de dire qu'il faut que je change la version du TS utilisée par VS Code. Je vais chercher par là :
    https://stackoverflow.com/questions/...n-the-construc

    Je vais tester ta sugestion sur le projet github EDIT=> Le projet compile correctement, par contre après désinstall, réinstall de VS code, vérif des versions du ts dans le package-lock.json ras.

  12. #12
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    donc avec le projet github ça fonctionne, je ne comprends pas.

    repart d'un nouveau projet généré et transfert ton code.

  13. #13
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Oui, c'est bizarre...Je pense que je vais tout désinstall-réinstall ds la journée qd j'aurai une minute : affaire à suivre

    EDIT => Problème résolu je viens de voir que j'avais un dossier node qui trainait hors de mon workspace et qui était assez vieux dans le path "/user/includes" du PC(sous linux en tt cas). En le supprimant ça fonctionne.

  14. #14
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour, je me permets de m'auto répondre car j'ai un élément de réponse sur ce problème que j'avais rencontré (à savoir le "forçage" d'initialisation des variables de classe et l'obligation de mettre l'operateur d'assertion "!" pour signifier que les variables en question étaient obligatoirement "not null"

    Le problème vient lorsque l'on lance un nouveau projet (ng new my-newproject)
    A un moment donné il demande ceci à la création du projet :

    Nom : Screenshot from 2021-03-08 11-13-10.png
Affichages : 2385
Taille : 18,0 Ko

    J'avais surement répondu "yes" à l'époque ce qui induisait 'obligation de pallier manuellement en ajoutant "!" au fait que la variable de classe soit potentiellement nulle. Pour rappel j'avais ceci en répondant "yes" :

    Nom : Screenshot from 2021-03-08 11-24-50.png
Affichages : 2401
Taille : 149,6 Ko

    J'étais contraint de rajouter à toutes les variables de classe l'opérateur d'assertion not null comme ceci :

    Nom : Screenshot from 2021-03-08 11-29-32.png
Affichages : 2374
Taille : 31,0 Ko

    En répondant "no" à l'option proposée, cela annule tous ces ennuis

    Esperant que ce petit complément pourra aider certains newbies comme moi !

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    merci pour cette précision. je n'étais pas au courant....

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 6
    Points
    6
    Par défaut
    il faut juste ajouter "strictPropertyInitialization": false au niveau de "compilerOptions" sur le fichier tsconfig.json (pas tsconfig.app.json)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 28/06/2012, 14h34
  2. Erreur "The given object has a null identifier"
    Par Maram mar dans le forum Hibernate
    Réponses: 1
    Dernier message: 30/08/2011, 13h31
  3. [XCode] Objective C : pathForResource = NULL !
    Par FabriceMAUPIN dans le forum XCode
    Réponses: 7
    Dernier message: 05/07/2011, 10h59
  4. Mon object est toujours null
    Par rahmoucha dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 20/12/2010, 14h25
  5. [AC-2007] Requête multicritère dont un critère possible null
    Par alfhcg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/12/2010, 23h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo