Selection is a simple construct that operates on a nested property in the non-primitive Units' value, i.e.: ListUnit, GenericUnit, and DictUnit.
Selection offers the ability to access and observe a nested property at a certain path in a Unit's value.
// create a Unitconst preferencesUnit = new DictUnit({initialValue:{color: 'blue', music: 'EDM', game: 'GTA5'}})// make a selection// the 'select' method takes path as it's paramsconst musicPreference = preferencesUnit.select('music')
After creating a Selection object, we can access the value at the selected path anytime, without worrying if the value still exists or not.
// access the value at the selected pathconsole.log(musicPreference.value())// logs 'EDM' immediately
To observe the value over time we can make an Observable at the selected path, and subscribe to it.
// create an Observableconst musicPreference$ = musicPreference.asObservable()// subsribe for reactive accessmusicPreference$.subscribe(value => console.log(value))// logs 'EDM' immediately, and// will log whenever the value at the selected path changes