Comments (4)
- For the first case where you need optional factory and
multi
, you can use the following workaround for now
// note the "!" non-null assertion.
export const [injectFn, provideFn] = createInjectionToken<MyType>(() => null!, { multi: true });
provideFn()
accepting a factory is tricky. What's the main difference between the following?
export const [injectFn, provideFn] = createInjectionToken(() => {
const foo = inject(FOO, { optional: true });
if (foo) return 'something'
return 'something else';
}, { multi: true });
provideFn();
// versus
provideFn(() => { const foo = inject(FOO); if (foo) return 'something' return 'something else' })
from ngxtension-platform.
Okay, not-null null
sounds cool :) But it's okay for this approach!
So what I'm trying to achieve is to have a multi-token that contains some objects. Sometimes, I need to inject
other tokens to create the object.
For example:
export const [injectBlocks, provideBlock] = createInjectionToken((): MyBlock[] => [], { multi: true });
Adding needed blocks:
// image.block.ts
provideBlock(() => {
const locale = inject(LOCALE);
return {
type: 'image',
align: locale === 'en-US' ? 'left' : 'right' // just an example
}
})
// text.block.ts
provideBlock(() => {
const direction = inject(Directionality);
return {
type: 'text',
textAlign: direction.value === 'ltr' ? 'left' : 'right'
}
})
Somewhere in the main component:
readonly blocks = injectBlocks(); // -> [{type: 'image' ...}, {type: 'text', ...}]
Is there a workaround for this now?
from ngxtension-platform.
hm....there's not a workaround now unfortunately. I'll add support for passing factories into provideFn
from ngxtension-platform.
@nartc that'd be amazing, thank you!
from ngxtension-platform.
Related Issues (20)
- feat: add schematic to convert from multifile to SFC and vice-versa
- Document usage of utilities to convert form values to signals HOT 11
- derivedAsync with required input HOT 2
- Invalid output that can't compile for convert-di-to-inject with local and "public" dependencies
- Signal inputs migration failing HOT 3
- input migrator results into code that cannot compile HOT 1
- Migrate to model instead of input, if the input is being used inside two way binding or the input value is being changed inside the component HOT 1
- feat(proposal): 3 types of form event utilities (observable streams / type filters / signal values) HOT 3
- [Inject Migration Enhancement]: Add ES Private Field notation support HOT 2
- injectParams - option for injecting child route params in parent compnent
- feat: migrate ngClass to class binding for some cases
- Migration schematics error in angular 18 HOT 3
- npm install fails on CI environment HOT 2
- feat: migrate components to self closing tags if there's no projected content
- Allow running on v18 HOT 2
- Template migration fails when using optional chaining operator in templates HOT 2
- Question: error using convert-di-to-inject HOT 3
- feat: add rxjs operators `poll` and `whenDocumentVisible`
- Move dependencies to devDependencies (nx, ts-morph, tslib, @nx/devkit, angular-eslint/bundled-angular-compiler) HOT 1
- (bug) Press Kit images not found
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ngxtension-platform.