@eromano@DenysVuika I upgraded to 3.8.0 for the fix for ADF-5106 and now none of our widgets work? Diidd I need to do anything else to upgrade than change versions from 3.7 --> 3.8
getting Unknown type: <our custom type name>
Tim Donovan
@tdonovancsra
please advise
3 replies
Matt Savino
@_MattSavino_twitter
@tdonovancsra - we're seeing the exact same thing. Did nothing but upgrade and the widget broke. Seems like maybe the formRenderingService.setComponentTypeResolver isn't working.
@tdonovancsra I made an issue that Eugenio -referenced. It looks like they're looking into it. I'm looking at the pull request that introduced these changes now to see if I can find a workaround. I'll let you know. https://github.com/Alfresco/alfresco-ng2-components/pull/5601/files
Tim Donovan
@tdonovancsra
thanks!
Denys Vuika
@DenysVuika
@tdonovancsra@_MattSavino_twitter :
What is the new behaviour?
new ProcessFormRenderingService (alfresco/process-services)
new CloudFormRenderingService (alfresco/process-services-cloud)
Matt Savino
@_MattSavino_twitter
@DenysVuika I'm trying any combination of injecting ProcessFormRenderingService into my component - with no luck so far. I noticed typeId was added to the custom widgets which extend WidgetComponent - so I added that. I've even tried making a custom form rendering service which extends ProcessFormRenderingService and no luck so far. I just cannot get it to recognize my custom widget. It always says Unknown type in the form.
It feels like form.component.ts is now running off of its own instance of ProcessFormRenderingService, which I don't have access to in my component and can't register my custom widget with.
All this code works on 3.6 and 3.7 and just follows the examples in demo-shell and the yo generator. I assume those don't work with 3.8.
Denys Vuika
@DenysVuika
The typeId was added to our widgets just to facilitate unit testing, it has no value outside our test suits
You can refer to the whole suit of unit tests to see what was changed: https://github.com/Alfresco/alfresco-ng2-components/pull/5601/files. I don't know how your code looks like, but you should not be redefining any custom classes, or replacing the FormRenderingService with anything else. It's hard to say why your code is failing without any steps to reproduce, but check out the unit tests we have
That example is not updated. Don't know why you take our e2e app as a reference
Matt Savino
@_MattSavino_twitter
We register the custom stencil in the constructor just like this component. Are you able to confirm this code still works?
Tim Donovan
@tdonovancsra
@DenysVuika are you saying we need to implement our own FormRenderingService provider by creating our own class?
Matt Savino
@_MattSavino_twitter
Ok can you give me an example that works?
Because I've tried everything I can think of
Denys Vuika
@DenysVuika
@tdonovancsra instead of injecting FormRenderingService you should be injecting ProcessFormRenderingService
Matt Savino
@_MattSavino_twitter
I am
it doesn't work - the component is never recognized
Denys Vuika
@DenysVuika
are we talking about APS 1.x or Cloud?
Matt Savino
@_MattSavino_twitter
APS
there's the template
I think if you try to call formRenderingService.setComponentTypeResolver() in any custom component which embeds <adf-form> in its template, you'll see that it doesn't work as of 3.8
Denys Vuika
@DenysVuika
Ok, guys, I think that there's a bug there. It may have multiple instances of ProcessFormRenderingService
Tim Donovan
@tdonovancsra
yeah I imported and still not working
Matt Savino
@_MattSavino_twitter
Yeah that's what it seemed like to me. I'm fine with a workaround if there is one. Thanks a lot for looking into this Denys. I really appreciate it.
I was wondering how provider works under the covers. I guess maybe it makes a separate instance just for the built in form component somehow?
Denys Vuika
@DenysVuika
Can someone try a quick workaround before I dive deeper into the fix. In the @Component attribute of the component that holds the Form, define providers section like this: