Skip to content

bug: (external) angular domino returns undefined instead of null for querySelector #27564

Closed

Description

@aleksander351

Prerequisites

Ionic Framework Version

v7.x

Current Behavior

I recently upgraded my Ionic application first from 5.x to 6.x and after that from 6.x to 7.x
I followed all the upgrade steps, described on the website and everything seems to work as it should.

However, when loading the page I get a long error message in the developer console of Visual studio code.

The problem is, I dont have any helper slot in my code.

So far I didn't find any solution to the problem. I would expect to find at least something about the warning in the docs.
`

        [Ionic Warning]: The "helper" slot has been deprecated in favor of using the "helperText" property on ion-input or ion-textarea. <ref *4> HTMLUnknownElement {
        parentNode: <ref *2> HTMLDivElement {
          parentNode: <ref *1> HTMLUnknownElement {
          parentNode: [HTMLUnknownElement],
          _previousSibling: [Circular *1],
          _nextSibling: [Circular *1],
          _index: undefined,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'ion-card',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'ION-CARD',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          __ngContext__: 444,
          _listeners: [Object: null prototype],
          _nid: 3034,
          _classList: [DOMTokenList],
          connectedCallback: [Function: h],
          's-p': [],
          's-rc': undefined,
          componentOnReady: [Function: componentOnReady$1],
          forceUpdate: [Function: forceUpdate],
          shadowRoot: [Circular *1],
          color: [Getter/Setter],
          button: [Getter/Setter],
          type: [Getter/Setter],
          disabled: [Getter/Setter],
          download: [Getter/Setter],
          href: [Getter/Setter],
          rel: [Getter/Setter],
          routerDirection: [Getter/Setter],
          routerAnimation: [Getter/Setter],
          target: [Getter/Setter],
          _lastModTime: 828,
          _children: [Object],
          's-cr': [Object],
          's-sc': 'sc-ion-card-md',
          's-en': ''
        },
        _previousSibling: <ref *3> HTMLUnknownElement {
          parentNode: [HTMLUnknownElement],
          _previousSibling: [Object],
          _nextSibling: [Circular *2],
          _index: 5,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'ion-fab',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'ION-FAB',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          __ngContext__: 444,
          _listeners: [Object: null prototype],
          _nid: 3269,
          connectedCallback: [Function: h],
          's-p': [],
          's-rc': undefined,
          componentOnReady: [Function: componentOnReady$1],
          forceUpdate: [Function: forceUpdate],
          shadowRoot: [Circular *3],
          horizontal: [Getter/Setter],
          vertical: [Getter/Setter],
          edge: [Getter/Setter],
          activated: [Getter/Setter],
          _lastModTime: 827,
          _children: [Object],
          's-cr': [Object],
          's-sn': '',
          's-ol': [Object],
          's-hn': 'ION-CARD',
          's-sc': 'sc-ion-fab',
          _classList: [DOMTokenList],
          's-en': ''
        },
        _nextSibling: {
          parentNode: [HTMLUnknownElement],
          _previousSibling: [Circular *2],
          _nextSibling: [Object],
          _index: 0,
          nodeType: 8,
          ownerDocument: [Object],
          _data: '',
          's-cn': true,
          _nid: 3035
        },
        _index: 6,
        _childNodes: NodeList(2) [ [Circular *4], [HTMLUnknownElement] ],
        _firstChild: null,
        nodeType: 1,
        ownerDocument: <ref *5> {
          parentNode: null,
          _previousSibling: [Circular *5],
          _nextSibling: [Circular *5],
          _index: undefined,
          _childNodes: null,
          _firstChild: [Object],
          nodeType: 9,
          isHTML: true,
          _address: 'http://localhost:58476/',
          readyState: 'loading',
          implementation: [Object],
          ownerDocument: null,
          _contentType: 'text/html',
          doctype: [Object],
          documentElement: [HTMLHtmlElement],
          _templateDocCache: null,
          _nodeIterators: null,
          _nid: 1,
          _nextnid: 3659,
          _nodes: [Array],
          byId: [Object: null prototype],
          modclock: 828,
          _scripting_enabled: true,
          defaultView: [Object],
          _lastModTime: 1,
          _listeners: [Object: null prototype],
          createElement: [Function: t],
          createElementNS: [Function: t]
        },
        localName: 'div',
        namespaceURI: 'http://www.w3.org/1999/xhtml',
        prefix: null,
        _tagName: 'DIV',
        _attrsByQName: [Object: null prototype] {
          '_ngcontent-sc108': [Object],
          class: [Object]
        },
        _attrsByLName: [Object: null prototype] {
          '|_ngcontent-sc108': [Object],
          '|class': [Object]
        },
        _attrKeys: [ '|_ngcontent-sc108', '|class' ],
        __ngContext__: 444,
        _nid: 3240,
        _lastModTime: 828,
        _children: {
          '0': [Circular *4],
          '1': [HTMLUnknownElement],
          element: [Circular *2],
          lastModTime: 175,
          childrenByNumber: [Array],
          childrenByName: [Object: null prototype] {}
        },
        's-sn': '',
        's-ol': {
          parentNode: [HTMLUnknownElement],
          _previousSibling: [Object],
          _nextSibling: [Object],
          _index: 3,
          nodeType: 8,
          ownerDocument: [Object],
          _data: 'org-location for <div> (host=undefined)',
          's-nr': [Circular *2],
          _nid: 3237
        },
        's-hn': 'ION-CARD'
      },
        _previousSibling: <ref *6> HTMLUnknownElement {
        parentNode: <ref *2> HTMLDivElement {
          parentNode: [HTMLUnknownElement],
          _previousSibling: [HTMLUnknownElement],
          _nextSibling: [Object],
          _index: 6,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          __ngContext__: 444,
          _nid: 3240,
          _lastModTime: 828,
          _children: [Object],
          's-sn': '',
          's-ol': [Object],
          's-hn': 'ION-CARD'
        },
        _previousSibling: [Circular *4],
        _nextSibling: [Circular *4],
        _index: undefined,
        _childNodes: NodeList(6) [
          [Object],
          [Object],
          [Object],
          [Object],
          [HTMLDivElement],
          [HTMLDivElement]
        ],
        _firstChild: null,
        nodeType: 1,
        ownerDocument: <ref *5> {
          parentNode: null,
          _previousSibling: [Circular *5],
          _nextSibling: [Circular *5],
          _index: undefined,
          _childNodes: null,
          _firstChild: [Object],
          nodeType: 9,
          isHTML: true,
          _address: 'http://localhost:58476/',
          readyState: 'loading',
          implementation: [Object],
          ownerDocument: null,
          _contentType: 'text/html',
          doctype: [Object],
          documentElement: [HTMLHtmlElement],
          _templateDocCache: null,
          _nodeIterators: null,
          _nid: 1,
          _nextnid: 3659,
          _nodes: [Array],
          byId: [Object: null prototype],
          modclock: 828,
          _scripting_enabled: true,
          defaultView: [Object],
          _lastModTime: 1,
          _listeners: [Object: null prototype],
          createElement: [Function: t],
          createElementNS: [Function: t]
        },
        localName: 'ion-item',
        namespaceURI: 'http://www.w3.org/1999/xhtml',
        prefix: null,
        _tagName: 'ION-ITEM',
        _attrsByQName: [Object: null prototype] {
          '_ngcontent-sc108': [Object],
          lines: [Object],
          class: [Object],
          's-mode': [Object]
        },
        _attrsByLName: [Object: null prototype] {
          '|_ngcontent-sc108': [Object],
          '|lines': [Object],
          '|class': [Object],
          '|s-mode': [Object]
        },
        _attrKeys: [ '|_ngcontent-sc108', '|lines', '|class', '|s-mode' ],
        __ngContext__: 444,
        _nid: 3249,
        connectedCallback: [Function: h],
        's-p': [],
        's-rc': undefined,
        _listeners: [Object: null prototype] {
          ionInput: [Array],
          ionColor: [Array],
          ionStyle: [Array]
        },
        componentOnReady: [Function: componentOnReady$1],
        forceUpdate: [Function: forceUpdate],
        shadowRoot: [Circular *6],
        color: [Getter/Setter],
        button: [Getter/Setter],
        detail: [Getter/Setter],
        detailIcon: [Getter/Setter],
        disabled: [Getter/Setter],
        download: [Getter/Setter],
        fill: [Getter/Setter],
        shape: [Getter/Setter],
        href: [Getter/Setter],
        rel: [Getter/Setter],
        lines: [Getter/Setter],
        counter: [Getter/Setter],
        routerAnimation: [Getter/Setter],
        routerDirection: [Getter/Setter],
        target: [Getter/Setter],
        type: [Getter/Setter],
        counterFormatter: [Getter/Setter],
        _lastModTime: 740,
        _children: {
          '0': [HTMLDivElement],
          '1': [HTMLDivElement],
          '2': undefined,
          element: [Circular *6],
          lastModTime: 740,
          childrenByNumber: [Array],
          childrenByName: [Object: null prototype] {}
        },
        's-cr': {
          parentNode: [Circular *6],
          _previousSibling: [HTMLDivElement],
          _nextSibling: [Object],
          _index: 0,
          nodeType: 8,
          ownerDocument: [Object],
          _data: '',
          's-cn': true,
          _nid: 3250
        },
        _classList: DOMTokenList {
          '0': 'card-info',
          '1': 'item-has-start-slot',
          '2': 'sc-ion-item-md-h',
          '3': 'item',
          '4': 'md',
          '5': 'item-lines-none',
          '6': 'item-fill-none',
          '7': 'ion-focusable',
          '8': 'hydrated',
          _getString: [Function (anonymous)],
          _setString: [Function (anonymous)],
          _length: 9,
          _lastStringValue: 'card-info item-has-start-slot sc-ion-item-md-h item md item-lines-none item-fill-none ion-focusable hydrated'
        },
        's-sc': 'sc-ion-item-md',
        's-en': ''
        },
        _nextSibling: <ref *6> HTMLUnknownElement {
        parentNode: <ref *2> HTMLDivElement {
          parentNode: [HTMLUnknownElement],
          _previousSibling: [HTMLUnknownElement],
          _nextSibling: [Object],
          _index: 6,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          __ngContext__: 444,
          _nid: 3240,
          _lastModTime: 828,
          _children: [Object],
          's-sn': '',
          's-ol': [Object],
          's-hn': 'ION-CARD'
        },
        _previousSibling: [Circular *4],
        _nextSibling: [Circular *4],
        _index: undefined,
        _childNodes: NodeList(6) [
          [Object],
          [Object],
          [Object],
          [Object],
          [HTMLDivElement],
          [HTMLDivElement]
        ],
        _firstChild: null,
        nodeType: 1,
        ownerDocument: <ref *5> {
          parentNode: null,
          _previousSibling: [Circular *5],
          _nextSibling: [Circular *5],
          _index: undefined,
          _childNodes: null,
          _firstChild: [Object],
          nodeType: 9,
          isHTML: true,
          _address: 'http://localhost:58476/',
          readyState: 'loading',
          implementation: [Object],
          ownerDocument: null,
          _contentType: 'text/html',
          doctype: [Object],
          documentElement: [HTMLHtmlElement],
          _templateDocCache: null,
          _nodeIterators: null,
          _nid: 1,
          _nextnid: 3659,
          _nodes: [Array],
          byId: [Object: null prototype],
          modclock: 828,
          _scripting_enabled: true,
          defaultView: [Object],
          _lastModTime: 1,
          _listeners: [Object: null prototype],
          createElement: [Function: t],
          createElementNS: [Function: t]
        },
        localName: 'ion-item',
        namespaceURI: 'http://www.w3.org/1999/xhtml',
        prefix: null,
        _tagName: 'ION-ITEM',
        _attrsByQName: [Object: null prototype] {
          '_ngcontent-sc108': [Object],
          lines: [Object],
          class: [Object],
          's-mode': [Object]
        },
        _attrsByLName: [Object: null prototype] {
          '|_ngcontent-sc108': [Object],
          '|lines': [Object],
          '|class': [Object],
          '|s-mode': [Object]
        },
        _attrKeys: [ '|_ngcontent-sc108', '|lines', '|class', '|s-mode' ],
        __ngContext__: 444,
        _nid: 3249,
        connectedCallback: [Function: h],
        's-p': [],
        's-rc': undefined,
        _listeners: [Object: null prototype] {
          ionInput: [Array],
          ionColor: [Array],
          ionStyle: [Array]
        },
        componentOnReady: [Function: componentOnReady$1],
        forceUpdate: [Function: forceUpdate],
        shadowRoot: [Circular *6],
        color: [Getter/Setter],
        button: [Getter/Setter],
        detail: [Getter/Setter],
        detailIcon: [Getter/Setter],
        disabled: [Getter/Setter],
        download: [Getter/Setter],
        fill: [Getter/Setter],
        shape: [Getter/Setter],
        href: [Getter/Setter],
        rel: [Getter/Setter],
        lines: [Getter/Setter],
        counter: [Getter/Setter],
        routerAnimation: [Getter/Setter],
        routerDirection: [Getter/Setter],
        target: [Getter/Setter],
        type: [Getter/Setter],
        counterFormatter: [Getter/Setter],
        _lastModTime: 740,
        _children: {
          '0': [HTMLDivElement],
          '1': [HTMLDivElement],
          '2': undefined,
          element: [Circular *6],
          lastModTime: 740,
          childrenByNumber: [Array],
          childrenByName: [Object: null prototype] {}
        },
        's-cr': {
          parentNode: [Circular *6],
          _previousSibling: [HTMLDivElement],
          _nextSibling: [Object],
          _index: 0,
          nodeType: 8,
          ownerDocument: [Object],
          _data: '',
          's-cn': true,
          _nid: 3250
        },
        _classList: DOMTokenList {
          '0': 'card-info',
          '1': 'item-has-start-slot',
          '2': 'sc-ion-item-md-h',
          '3': 'item',
          '4': 'md',
          '5': 'item-lines-none',
          '6': 'item-fill-none',
          '7': 'ion-focusable',
          '8': 'hydrated',
          _getString: [Function (anonymous)],
          _setString: [Function (anonymous)],
          _length: 9,
          _lastStringValue: 'card-info item-has-start-slot sc-ion-item-md-h item md item-lines-none item-fill-none ion-focusable hydrated'
        },
        's-sc': 'sc-ion-item-md',
        's-en': ''
      },
        _index: undefined,
        _childNodes: NodeList(4) [
        {
          parentNode: [Circular *4],
          _previousSibling: [HTMLDivElement],
          _nextSibling: [Object],
          _index: 0,
          nodeType: 8,
          ownerDocument: [Object],
          _data: '',
          's-cn': true,
          _nid: 3242
        },
        {
          parentNode: [Circular *4],
          _previousSibling: [Object],
          _nextSibling: [HTMLDivElement],
          _index: 1,
          nodeType: 8,
          ownerDocument: [Object],
          _data: 'org-location for <ion-label> (host=undefined)',
          's-nr': [HTMLUnknownElement],
          _nid: 3459
        },
        HTMLDivElement {
          parentNode: [Circular *4],
          _previousSibling: [Object],
          _nextSibling: [HTMLDivElement],
          _index: 3,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          _classList: [DOMTokenList],
          's-si': 'sc-ion-item-md',
          's-hn': 'ION-ITEM',
          _nid: 3448,
          _lastModTime: 828,
          _children: [Object]
        },
        HTMLDivElement {
          parentNode: [Circular *4],
          _previousSibling: [HTMLDivElement],
          _nextSibling: [Object],
          _index: 4,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          _classList: [DOMTokenList],
          's-si': 'sc-ion-item-md',
          's-hn': 'ION-ITEM',
          _nid: 3456,
          _lastModTime: 729,
          _children: [Object]
        }
        ],
        _firstChild: null,
      nodeType: 1,
      ownerDocument: <ref *5> {
        parentNode: null,
        _previousSibling: [Circular *5],
        _nextSibling: [Circular *5],
        _index: undefined,
        _childNodes: null,
        _firstChild: {
          parentNode: [Circular *5],
          _previousSibling: [HTMLHtmlElement],
          _nextSibling: [HTMLHtmlElement],
          _index: undefined,
          nodeType: 10,
          ownerDocument: [Circular *5],
          name: 'html',
          publicId: '',
          systemId: '',
          _nid: 2
        },
        nodeType: 9,
        isHTML: true,
        _address: 'http://localhost:58476/',
        readyState: 'loading',
        implementation: { contextObject: [Circular *5] },
        ownerDocument: null,
        _contentType: 'text/html',
        doctype: {
          parentNode: [Circular *5],
          _previousSibling: [HTMLHtmlElement],
          _nextSibling: [HTMLHtmlElement],
          _index: undefined,
          nodeType: 10,
          ownerDocument: [Circular *5],
          name: 'html',
          publicId: '',
          systemId: '',
          _nid: 2
        },
        documentElement: HTMLHtmlElement {
          parentNode: [Circular *5],
          _previousSibling: [Object],
          _nextSibling: [Object],
          _index: undefined,
          _childNodes: null,
          _firstChild: [HTMLHeadElement],
          nodeType: 1,
          ownerDocument: [Circular *5],
          localName: 'html',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'HTML',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          _nid: 3,
          _classList: [DOMTokenList]
        },
        _templateDocCache: null,
        _nodeIterators: null,
        _nid: 1,
        _nextnid: 3659,
        _nodes: [
          null,                 [Circular *5],        [Object],
          [HTMLHtmlElement],    [HTMLHeadElement],    [HTMLLinkElement],
          [Object],             [HTMLMetaElement],    [Object],
          [HTMLTitleElement],   undefined,            [Object],
          [HTMLBaseElement],    [Object],             [HTMLMetaElement],
          [Object],             [HTMLMetaElement],    [Object],
          [HTMLMetaElement],    [Object],             [HTMLMetaElement],
          [Object],             [HTMLLinkElement],    [Object],
          [HTMLStyleElement],   [Object],             [Object],
          [HTMLLinkElement],    [Object],             [Object],
          [Object],             [HTMLMetaElement],    [Object],
          [HTMLMetaElement],    [Object],             [HTMLStyleElement],
          [Object],             [HTMLLinkElement],    [Object],
          [HTMLBodyElement],    [Object],             [HTMLUnknownElement],
          [Object],             [HTMLScriptElement],  [HTMLScriptElement],
          [HTMLScriptElement],  [HTMLScriptElement],  [Object],
          [HTMLStyleElement],   [Object],             [HTMLUnknownElement],
          [HTMLUnknownElement], [HTMLUnknownElement], [Object],
          [Object],             undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            undefined,            [HTMLUnknownElement],
          [HTMLStyleElement],   [Object],             [HTMLStyleElement],
          [Object],             undefined,            undefined,
          undefined,            undefined,            undefined,
          undefined,            [Object],             [HTMLMetaElement],
          [HTMLMetaElement],
          ... 3559 more items
        ],
        byId: [Object: null prototype] {
          main: [HTMLUnknownElement],
          _id: [HTMLInputElement],
          'serverApp-state': [HTMLScriptElement],
          'background-content': [MultiId],
          'ion-sel-0-lbl': [HTMLLabelElement],
          'ion-sel-0': [HTMLButtonElement],
          'ion-selopt-0': [HTMLUnknownElement],
          'ion-selopt-1': [HTMLUnknownElement],
          'ion-selopt-2': [HTMLUnknownElement],
          'ion-selopt-3': [HTMLUnknownElement],
          'ion-selopt-4': [HTMLUnknownElement],
          'ion-selopt-5': [HTMLUnknownElement],
          'ion-selopt-6': [HTMLUnknownElement],
          'ion-selopt-7': [HTMLUnknownElement],
          'ion-selopt-8': [HTMLUnknownElement],
          'ion-selopt-9': [HTMLUnknownElement]
        },
        modclock: 828,
        _scripting_enabled: true,
        defaultView: {
          document: [Circular *5],
          location: [Location],
          _listeners: [Object: null prototype],
          alert: [Function: bound alert],
          blur: [Function: bound blur],
          cancelAnimationFrame: [Function: bound cancelAnimationFrame],
          cancelIdleCallback: [Function: bound cancelIdleCallback],
          close: [Function: bound close],
          confirm: [Function: bound confirm],
          focus: [Function: bound focus],
          matchMedia: [Function: bound matchMedia],
          open: [Function: bound open],
          prompt: [Function: bound prompt],
          requestAnimationFrame: [Function: bound requestAnimationFrame],
          requestIdleCallback: [Function: bound requestIdleCallback],
          URL: [Function: bound URL],
          customElements: null,
          __allowInterval: false,
          __maxTimeout: 0,
          fetch: [Function (anonymous)],
          FetchError: [class FetchError],
          Headers: [class Headers],
          Request: [class Request],
          Response: [class Response],
          Ionic: [Object]
        },
        _lastModTime: 1,
        _listeners: [Object: null prototype] {
          pause: [Array],
          resume: [Array],
          ionBackButton: [Array],
          keydown: [Array]
        },
        createElement: [Function: t],
        createElementNS: [Function: t]
        },
        localName: 'ion-item',
        namespaceURI: 'http://www.w3.org/1999/xhtml',
        prefix: null,
        _tagName: 'ION-ITEM',
        _attrsByQName: [Object: null prototype] {
        '_ngcontent-sc108': {
          localName: '_ngcontent-sc108',
          prefix: null,
          namespaceURI: null,
          data: '',
          _ownerElement: [Circular *4],
          onchange: undefined
        },
        lines: {
          localName: 'lines',
          prefix: null,
          namespaceURI: null,
          data: 'none',
          _ownerElement: [Circular *4],
          onchange: undefined
        },
        class: {
          localName: 'class',
          prefix: null,
          namespaceURI: null,
          data: 'location item-has-start-slot sc-ion-item-md-h item md item-lines-none item-fill-none ion-focusable hydrated',
          _ownerElement: [Circular *4],
          onchange: [Function (anonymous)]
        },
        's-mode': {
          localName: 's-mode',
          prefix: null,
          namespaceURI: null,
          data: 'md',
          _ownerElement: [Circular *4],
          onchange: undefined
        }
        },
        _attrsByLName: [Object: null prototype] {
        '|_ngcontent-sc108': {
          localName: '_ngcontent-sc108',
          prefix: null,
          namespaceURI: null,
          data: '',
          _ownerElement: [Circular *4],
          onchange: undefined
        },
        '|lines': {
          localName: 'lines',
          prefix: null,
          namespaceURI: null,
          data: 'none',
          _ownerElement: [Circular *4],
          onchange: undefined
        },
        '|class': {
          localName: 'class',
          prefix: null,
          namespaceURI: null,
          data: 'location item-has-start-slot sc-ion-item-md-h item md item-lines-none item-fill-none ion-focusable hydrated',
          _ownerElement: [Circular *4],
          onchange: [Function (anonymous)]
        },
        '|s-mode': {
          localName: 's-mode',
          prefix: null,
          namespaceURI: null,
          data: 'md',
          _ownerElement: [Circular *4],
          onchange: undefined
        }
        },
        _attrKeys: [ '|_ngcontent-sc108', '|lines', '|class', '|s-mode' ],
        __ngContext__: 444,
        _nid: 3241,
        connectedCallback: [Function: h],
        's-p': [],
        's-rc': undefined,
        _listeners: [Object: null prototype] {
        ionInput: [ [Object] ],
        ionColor: [ [Object] ],
        ionStyle: [ [Object] ]
        },
        componentOnReady: [Function: componentOnReady$1],
        forceUpdate: [Function: forceUpdate],
        shadowRoot: [Circular *4],
        color: [Getter/Setter],
        button: [Getter/Setter],
        detail: [Getter/Setter],
        detailIcon: [Getter/Setter],
        disabled: [Getter/Setter],
        download: [Getter/Setter],
        fill: [Getter/Setter],
        shape: [Getter/Setter],
        href: [Getter/Setter],
        rel: [Getter/Setter],
        lines: [Getter/Setter],
        counter: [Getter/Setter],
        routerAnimation: [Getter/Setter],
        routerDirection: [Getter/Setter],
        target: [Getter/Setter],
        type: [Getter/Setter],
        counterFormatter: [Getter/Setter],
        _lastModTime: 828,
        _children: {
        '0': HTMLDivElement {
          parentNode: [Circular *4],
          _previousSibling: [Object],
          _nextSibling: [HTMLDivElement],
          _index: 3,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          _classList: [DOMTokenList],
          's-si': 'sc-ion-item-md',
          's-hn': 'ION-ITEM',
          _nid: 3448,
          _lastModTime: 828,
          _children: [Object]
          },
        '1': HTMLDivElement {
          parentNode: [Circular *4],
          _previousSibling: [HTMLDivElement],
          _nextSibling: [Object],
          _index: 4,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          _classList: [DOMTokenList],
          's-si': 'sc-ion-item-md',
          's-hn': 'ION-ITEM',
          _nid: 3456,
          _lastModTime: 729,
          _children: [Object]
        },
          element: [Circular *4],
          lastModTime: 729,
          childrenByNumber: [ [HTMLDivElement], [HTMLDivElement] ],
          childrenByName: [Object: null prototype] {}
        },
          's-cr': <ref *7> {
          parentNode: [Circular *4],
        _previousSibling: HTMLDivElement {
          parentNode: [Circular *4],
          _previousSibling: [HTMLDivElement],
          _nextSibling: [Circular *7],
          _index: 4,
          _childNodes: [NodeList],
          _firstChild: null,
          nodeType: 1,
          ownerDocument: [Object],
          localName: 'div',
          namespaceURI: 'http://www.w3.org/1999/xhtml',
          prefix: null,
          _tagName: 'DIV',
          _attrsByQName: [Object: null prototype],
          _attrsByLName: [Object: null prototype],
          _attrKeys: [Array],
          _classList: [DOMTokenList],
          's-si': 'sc-ion-item-md',
          's-hn': 'ION-ITEM',
          _nid: 3456,
          _lastModTime: 729,
          _children: [Object]
        },
        _nextSibling: {
          parentNode: [Circular *4],
          _previousSibling: [Circular *7],
          _nextSibling: [HTMLDivElement],
          _index: 1,
          nodeType: 8,
          ownerDocument: [Object],
          _data: 'org-location for <ion-label> (host=undefined)',
          's-nr': [HTMLUnknownElement],
          _nid: 3459
        },
        _index: 0,
        nodeType: 8,
        ownerDocument: <ref *5> {
          parentNode: null,
          _previousSibling: [Circular *5],
          _nextSibling: [Circular *5],
          _index: undefined,
          _childNodes: null,
          _firstChild: [Object],
          nodeType: 9,
          isHTML: true,
          _address: 'http://localhost:58476/',
          readyState: 'loading',
          implementation: [Object],
          ownerDocument: null,
          _contentType: 'text/html',
          doctype: [Object],
          documentElement: [HTMLHtmlElement],
          _templateDocCache: null,
          _nodeIterators: null,
          _nid: 1,
          _nextnid: 3659,
          _nodes: [Array],
          byId: [Object: null prototype],
          modclock: 828,
          _scripting_enabled: true,
          defaultView: [Object],
          _lastModTime: 1,
          _listeners: [Object: null prototype],
          createElement: [Function: t],
          createElementNS: [Function: t]
        },
        _data: '',
        's-cn': true,
        _nid: 3242
        },
        _classList: DOMTokenList {
        '0': 'location',
        '1': 'item-has-start-slot',
        '2': 'sc-ion-item-md-h',
        '3': 'item',
        '4': 'md',
        '5': 'item-lines-none',
        '6': 'item-fill-none',
        '7': 'ion-focusable',
        '8': 'hydrated',
        _getString: [Function (anonymous)],
        _setString: [Function (anonymous)],
        _length: 9,
        _lastStringValue: 'location item-has-start-slot sc-ion-item-md-h item md item-lines-none item-fill-none ion-focusable hydrated'
        },
        's-sc': 'sc-ion-item-md',
        's-en': ''
        }

`

Expected Behavior

No error/warning messages in the console.

Steps to Reproduce

I am running a server side rendered version:
"serve:ssr": "node dist/app/server/main.js",

Code Reproduction URL

No response

Ionic Info

`

   ionic info
   [WARN] Error loading @ionic/angular package.json: Error
   [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './package' is not
   defined by "exports" in
   E:\xxxxxxx\node_modules\@ionic\angular\package.json

   Ionic:

   Ionic CLI                     : 6.12.3 (C:\Users\alex\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework               : not installed
   @angular-devkit/build-angular : 15.2.8
   @angular-devkit/schematics    : 15.2.8
   @angular/cli                  : 15.2.8
   @ionic/angular-toolkit        : 9.0.0

   Capacitor:

   Capacitor CLI   : 2.4.5
   @capacitor/core : 2.4.5

   Utility:

   cordova-res : not installed
   native-run  : not installed

   System:

   NodeJS : v16.18.0 (C:\Program Files\nodejs\node.exe)
   npm    : 6.11.3
   OS     : Windows 10

`

Angular: ng version
`

   Package                         Version
   ---------------------------------------------------------       
   @angular-devkit/architect       0.1502.8
   @angular-devkit/build-angular   15.2.8
   @angular-devkit/core            15.2.8
   @angular-devkit/schematics      15.2.8
   @angular/cli                    15.2.8
   @nguniversal/builders           15.2.1
   @nguniversal/express-engine     15.2.1
   @schematics/angular             15.2.8
   rxjs                            7.5.0
   typescript                      4.9.5

`

package json:
`

   "@angular/animations": "15.2.9",
   "@angular/common": "^15.2.9",
   "@angular/core": "^15.2.9",
   "@angular/forms": "^15.2.9",
   "@angular/platform-browser": "^15.2.9",
   "@angular/platform-browser-dynamic": "^15.2.9",
   "@angular/platform-server": "15.2.9",
   "@angular/router": "^15.2.9",
   "@capacitor/core": "2.4.5",
   "@ionic-native/core": "^5.0.0",
   "@ionic-native/splash-screen": "^5.0.0",
   "@ionic-native/status-bar": "^5.0.0",
   "@ionic/angular": "7.0.7",
   "@nguniversal/express-engine": "15.2.1",
   "@ionic/angular-server": "7.0.7",
   "@ionic/angular-toolkit": "9.0.0",
   "@nguniversal/builders": "15.2.1",

`

Additional Information

No response

Activity

  1. aleksander351 commented on May 28, 2023

    @aleksander351
    Author

    From what I learned so far, the ion-label implementation for ion-input, ion-select and so on has changed in the recent versions. Didn't find that in the migration guides so far. I fixed all of the ion-label problems, but the error message is still there.

  2. self-assigned this
    on May 30, 2023
  3. ionitron-bot commented on May 30, 2023

    @ionitron-bot

    Thanks for the issue! This issue has been labeled as needs reproduction. This label is added to issues that need a code reproduction.

    Please reproduce this issue in an Ionic starter application and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed.

    If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was not enough for our team to reproduce the issue.

    For a guide on how to create a good reproduction, see our Contributing Guide.

  4. removed their assignment
    on May 30, 2023
  5. aleksander351 commented on May 31, 2023

    @aleksander351
    Author

    @liamdebeasi
    From what I see in the source code, the helper and error slots are only inside commented out, generated code of my menu items. See last 3 lines.
    Example:

    <ion-menu-toggle
      _ngcontent-sc138=""
      class="sc-ion-menu-toggle-h md menu-toggle-hidden sc-ion-menu-toggle-s hydrated"
      aria-hidden="true"
      ><!----><!--org-location for <ion-item> (host=undefined)--><!--<slot> (host=ion-menu-toggle)--><ion-item
        _ngcontent-sc138=""
        menuclose=""
        tabindex="0"
        class="item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none in-list ion-activatable ion-focusable hydrated"
        s-mode="md"
        role="listitem"
        ><!----><!--org-location for <ion-icon> (host=undefined)--><!--org-location for <ion-label> (host=undefined)--><a
          href="/"
          class="item-native sc-ion-item-md sc-ion-item-md-s"
          part="native"
          ><!--<slot name="start"> (host=ion-item)--><ion-icon
            _ngcontent-sc138=""
            slot="start"
            name="home-outline"
            class="sc-ion-icon-h md hydrated"
            role="img"
            ><!---->
            <div class="icon-inner sc-ion-icon"></div
          ></ion-icon>
          <div class="item-inner sc-ion-item-md sc-ion-item-md-s">
            <div class="input-wrapper sc-ion-item-md sc-ion-item-md-s">
              <!--<slot> (host=ion-item)--><ion-label
                _ngcontent-sc138=""
                s-mode="md"
                class="sc-ion-label-md-h sc-ion-label-md-s md hydrated"
                ><!---->
                Home
              </ion-label>
            </div>
            <!--<slot name="end"> (host=ion-item)-->
            <div class="item-inner-highlight sc-ion-item-md"></div>
          </div>
          <ion-ripple-effect
            class="sc-ion-item-md sc-ion-ripple-effect-h md hydrated"
            role="presentation"
            ><!----></ion-ripple-effect
          >
          <div class="item-highlight sc-ion-item-md"></div
        ></a>
        <div class="item-bottom sc-ion-item-md sc-ion-item-md-s">
          <!--<slot name="error"> (host=ion-item)--><!--<slot name="helper"> (host=ion-item)-->
        </div></ion-item
      ></ion-menu-toggle
    >
    
    

    Original code that generates the above code:

            <ion-menu-toggle>
              <ion-item
                menuClose
                [routerLink]="['']"
                [queryParams]="{ l: languageParams }"
              >
                <ion-icon slot="start" name="home-outline"></ion-icon>
                <ion-label>
                  {{ lang.home }}
                </ion-label>
              </ion-item>
            </ion-menu-toggle>
    

    Note, we use Server side rendering in our application.

  6. Saqib92 commented on Jun 1, 2023

    @Saqib92

    Also how can i show multiple error texts?

    I previously had:

    <ion-item fill="outline" >
         <ion-label position="stacked" color="warning">
           <ion-icon slot="start" name="person"></ion-icon>
             Enter Email
         </ion-label>
         
        <ion-input type="email" formControlName="email"></ion-input>
        
        <ng-container *ngIf="getLoginControl['email'].touched">
           <ion-note slot="error"
               *ngIf="(getLoginControl['email'].errors && getLoginControl['email'].errors['required'])">
              Email is required*
           </ion-note>
           
           <ion-note slot="error" *ngIf="(getLoginControl['email'].errors && getLoginControl['email'].invalid)">
             Email is Invalid*
           </ion-note>
        </ng-container>
     </ion-item>
    
  7. averyrousseau commented on Jun 1, 2023

    @averyrousseau
    Contributor

    Could you create a minimal reproduction app and post a link to it, such as a Github repo? Having a runnable example will help us determine the root cause of the issue. See the contributing guide for a how-to.

  8. aleksander351 commented on Jun 4, 2023

    @aleksander351
    Author

    Could you create a minimal reproduction app and post a link to it, such as a Github repo? Having a runnable example will help us determine the root cause of the issue. See the contributing guide for a how-to.

    @amandaejohnston
    I don't think this is possible, since you need to build server side code and run a node process. How is this possible with web sandboxes?

  9. averyrousseau commented on Jun 6, 2023

    @averyrousseau
    Contributor

    You'll want to create a Github repo rather than use Stackblitz or another web sandbox. Just make sure it only has the code necessary to reproduce the issue.

  10. added
    needs: replythe issue needs a response from the user
    and removed on Jun 6, 2023
  11. lilian131 commented on Jun 7, 2023

    @lilian131

    I have the same problem using SSR any ion-item inside ion-menu will print warning messages in the console

  12. 33 remaining items

  13. b-chowdr commented on Jul 16, 2023

    @b-chowdr

    @liamdebeasi FWIW, I was able to reproduce this using https://github.com/mcornillon87/ionitem; @mcornillon87's instructions were slightly different different from what you tried.

    For that rep, you need to:

    1. Clone repo
    2. Run npm install
    3. Run npm run dev:ssr
    4. Open app in the browser.

    If I run npm run build:ssr && npm run serve:ssr, I instead get the error Error: NotYetImplemented, which also shouldn't be happening… not sure if it's related. If not I can open another issue for that error.

    If that still doesn't reproduce, maybe it's environment related? I'm running macOS 13.4.1 (c) and node v16.18.1.

  14. added and removed
    needs: replythe issue needs a response from the user
    on Jul 16, 2023
  15. liamdebeasi commented on Jul 17, 2023

    @liamdebeasi
    Contributor

    Thanks @b-chowdr! I can reproduce this now. The problem here is that we check for the existence of elements with attributes such as slot="helper" inside ion-item. We do this using a querySelector:

    const hasHelperSlot = el.querySelector('[slot="helper"]') !== null;

    querySelector should return null if the element is not found, but in this case it is (incorrectly) returning undefined. Since we do a strict !== null check, the hasHelperSlot condition is true, and the warning logs. I will see if I can identify why this is returning undefined.

  16. liamdebeasi commented on Jul 17, 2023

    @liamdebeasi
    Contributor

    The root issue is with Domino, a library that Angular uses internally. Domino polyfills Element.querySelector in SSR. However, it incorrectly returns undefined instead of null when an element is not found. Since Ionic uses strict null checks, the deprecation warning is incorrectly being logged.

    I filed an issue with the Angular team: angular/angular#51068

  17. changed the title [-][Ionic Warning]: The "helper" slot has been deprecated in favor of using the "helperText" property on ion-input or ion-textarea. [/-] [+]bug: (external) angular domino returns undefined instead of null for querySelector[/+] on Jul 17, 2023
  18. added
    bug: externalBugs in non-Ionic software that impact Ionic apps (I.e. WebKit, Angular, Android etc)
    on Jul 17, 2023
  19. mwyld commented on Feb 15, 2024

    @mwyld

    I'm also getting this issue. I've +1 the angular ticket as July 23 was the last update ref: angular/domino#16

    @liamdebeasi is there a temporary workaround in the mean time to retract the console outputting thousands of lines?

    image

  20. aleksander351 commented on Jun 22, 2024

    @aleksander351
    Author

    fixed domino temporarily with patch-package localy. I don't believe it will ever be fixed for older versions of Angular anyways so I will close this.

  21. ionitron-bot commented on Jul 22, 2024

    @ionitron-bot

    Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out.

  22. locked and limited conversation to collaborators on Jul 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug: externalBugs in non-Ionic software that impact Ionic apps (I.e. WebKit, Angular, Android etc)package: angular@ionic/angular package

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions