Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom FieldType with Universal throws various errors #1821

Closed
intellix opened this issue Oct 5, 2019 · 3 comments · Fixed by #1823
Closed

Custom FieldType with Universal throws various errors #1821

intellix opened this issue Oct 5, 2019 · 3 comments · Fixed by #1823
Labels

Comments

@intellix
Copy link
Contributor

intellix commented Oct 5, 2019

I'm submitting a ... (check one with "x")

[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request

Current behavior

Custom FieldTypes are no longer supported on Angular Universal:

Node Express server listening on http://localhost:4000
ERROR ReferenceError: FileList is not defined
    at clone (/Users/dom/Projects/formly-universal-test/dist/server/main.js:76756:29)
    at args.forEach.src (/Users/dom/Projects/formly-universal-test/dist/server/main.js:76687:32)
    at Array.forEach (<anonymous>)
    at reverseDeepMerge (/Users/dom/Projects/formly-universal-test/dist/server/main.js:76680:10)
    at CoreExtension.initFieldOptions (/Users/dom/Projects/formly-universal-test/dist/server/main.js:79030:9)
    at CoreExtension.onPopulate (/Users/dom/Projects/formly-universal-test/dist/server/main.js:78976:14)
    at getExtensions.forEach.extension (/Users/dom/Projects/formly-universal-test/dist/server/main.js:77202:56)
    at Array.forEach (<anonymous>)
    at ngx_formly_core_FormlyFormBuilder._buildForm (/Users/dom/Projects/formly-universal-test/dist/server/main.js:77198:30)
    at field.fieldGroup.forEach (/Users/dom/Projects/formly-universal-test/dist/server/main.js:77208:25)
ERROR Error: Cannot find control with unspecified name attribute
    at forms_throwError (/Users/dom/Projects/formly-universal-test/dist/server/main.js:62394:11)
    at setUpControl (/Users/dom/Projects/formly-universal-test/dist/server/main.js:62218:9)
    at forms_FormControlDirective.ngOnChanges (/Users/dom/Projects/formly-universal-test/dist/server/main.js:65767:13)
    at checkAndUpdateDirectiveInline (/Users/dom/Projects/formly-universal-test/dist/server/main.js:35462:19)
    at checkAndUpdateNodeInline (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46126:20)
    at checkAndUpdateNode (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46065:16)
    at prodCheckAndUpdateNode (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46919:5)
    at Object.updateDirectives (/Users/dom/Projects/formly-universal-test/dist/server/main.js:98128:1229)
    at Object.updateDirectives (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46539:39)
    at checkAndUpdateView (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46030:14)
TypeError: Cannot read property 'hooks' of undefined
    at ngx_formly_core_FormlyField.triggerHook (/Users/dom/Projects/formly-universal-test/dist/server/main.js:77685:24)
    at ngx_formly_core_FormlyField.ngOnDestroy (/Users/dom/Projects/formly-universal-test/dist/server/main.js:77642:14)
    at callProviderLifecycles (/Users/dom/Projects/formly-universal-test/dist/server/main.js:35890:18)
    at callElementProvidersLifecycles (/Users/dom/Projects/formly-universal-test/dist/server/main.js:35849:13)
    at callLifecycleHooksChildrenFirst (/Users/dom/Projects/formly-universal-test/dist/server/main.js:35831:29)
    at destroyView (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46257:5)
    at callViewAction (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46416:13)
    at execEmbeddedViewsAction (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46353:17)
    at destroyView (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46255:5)
    at callViewAction (/Users/dom/Projects/formly-universal-test/dist/server/main.js:46416:13)

Expected behavior

Custom field types with Universal shouldn't throw

Minimal reproduction of the problem with instructions

  1. git checkout https://github.com/intellix/formly-universal-test.git
  2. cd formly-universal-test
  3. npm ci
  4. npm run build:ssr && npm run serve:ssr

What is the motivation / use case for changing the behavior?

Get universal working with custom field types

  • Angular version: 2.0.X
Angular CLI: 8.0.6
Node: 10.16.0
OS: darwin x64
Angular: 8.0.3
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... platform-server, router

Package                                    Version
--------------------------------------------------------------------
@angular-devkit/architect                  0.800.6
@angular-devkit/build-angular              0.800.6
@angular-devkit/build-optimizer            0.800.6
@angular-devkit/build-webpack              0.800.6
@angular-devkit/core                       8.0.6
@angular-devkit/schematics                 8.0.6
@angular/cdk                               8.2.2
@angular/cli                               8.0.6
@angular/material                          8.2.2
@ngtools/webpack                           8.0.6
@nguniversal/express-engine                8.1.1
@nguniversal/module-map-ngfactory-loader   8.1.1
@schematics/angular                        8.0.6
@schematics/update                         0.800.6
rxjs                                       6.4.0
typescript                                 3.4.5
webpack                                    4.30.0
@aitboudad aitboudad added the bug label Oct 5, 2019
@intellix
Copy link
Contributor Author

intellix commented Oct 7, 2019

if I go to the dist bundle served by universal and remove these 3 checks the page will render:

        || value instanceof FileList
        || value instanceof File
        || value instanceof Blob

It renders, but universal spits out these additional errors:

ERROR TypeError: Cannot set property 'focus' of undefined
  at Subscriber_SafeSubscriber.focusMonitor.monitor.subscribe.origin [as _next] (/Users/dom/Projects/formly-universal-test/dist/server/main.js:96439:30)
  at Subscriber_SafeSubscriber.__tryOrUnsub (/Users/dom/Projects/formly-universal-test/dist/server/main.js:9834:16)
  at Subscriber_SafeSubscriber.next (/Users/dom/Projects/formly-universal-test/dist/server/main.js:9773:22)
  at Subscriber_Subscriber._next (/Users/dom/Projects/formly-universal-test/dist/server/main.js:9721:26)
  at Subscriber_Subscriber.next (/Users/dom/Projects/formly-universal-test/dist/server/main.js:9698:18)
  at Observable_Observable.subscriber [as _subscribe] (/Users/dom/Projects/formly-universal-test/dist/server/main.js:67468:20)
  at Observable_Observable._trySubscribe (/Users/dom/Projects/formly-universal-test/dist/server/main.js:9976:25)
  at Observable_Observable.subscribe (/Users/dom/Projects/formly-universal-test/dist/server/main.js:9962:22)
  at new ngx_formly_material_form_field_FormlyWrapperFormField (/Users/dom/Projects/formly-universal-test/dist/server/main.js:96434:48)
  at createClass (/Users/dom/Projects/formly-universal-test/dist/server/main.js:35547:20)

@aitboudad
Copy link
Member

I'm on it, the second issue is related to the form-field wrapper

@aitboudad
Copy link
Member

We've added some integration test to avoid regressions in the future, the fix is included in v5.5.0 release and thanks for the reproduction repo 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

Successfully merging a pull request may close this issue.

2 participants