Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
cesium2s
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
clients
Cesium-grp
cesium2s
Commits
d0f5874c
Commit
d0f5874c
authored
1 year ago
by
Benoit Lavenier
Browse files
Options
Downloads
Patches
Plain Diff
fix(doc) Add @RxStateXxx annotation in the Developer guide
parent
045191d3
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/developer_guide.md
+35
-17
35 additions, 17 deletions
doc/developer_guide.md
with
35 additions
and
17 deletions
doc/developer_guide.md
+
35
−
17
View file @
d0f5874c
...
...
@@ -2,27 +2,45 @@
## Writing a component
-
Pour chaque composant Angular (v1
4
):
-
Pour chaque composant Angular (v1
7
):
-
Utiliser Ionic framework, et si besoin Angular Material. Utiliser la classe Moment pour les dates.
-
Utiliser RxState avec providers: [RxState] dans la déclaration @Component.
-
Juste au-dessus de chaque classe composant, déclarer une interface MonComponentState :
*
En remplaçant "MonComponent" par le nom du composant.
*
Ajouter les attributs dynamiques du composant dans cette interface.
-
Utiliser
`RxState`
avec providers:
`[RxState]`
dans la déclaration
`@Component(/*...*/, providers: [RxState])`
.
-
Juste au-dessus de chaque classe composant, déclarer une interface
`MonComponentState`
(en remplaçant
`MonComponent`
par le nom du composant) :
*
Déclarer dans cette interface les propriétés dynamiques du composant.
-
Dans le constructeur :
*
Limiter les paramètres en utilisant injector: Injector pour faciliter l'héritage.
*
Définir tous les paramètres avec une visibilité protected.
*
Ajouter un paramètre state: RxState
<MonComposantState>
.
-
Dans le composant :
-
Ajouter une propriété
`state`
avec l'annotation
`@RxStateRegister()`
```
ts
@
RxStateRegister
()
protected
state
:
RxState
<
MonComposantState
>
=
inject
(
RxState
);
```
-
Pour chaque attribut dynamique du composant :
*
Définir l'attribut avec son type simple dans la classe MonComposantState.
*
Dans le composant, définir un getter et un setter avec @Input qui utilise state :
*
Dans le composant, définir chaque propriété avec les annotations
`@Input()`
et
`@RxStateProperty()`
```
ts
@
Input
()
@
RxStateProperty
()
attribute
:
string
;
```
> Pour information, `@RxStateProperty()` va générer automatiquement un code équivalent à :
> ```ts
> @Input() set attribute(value: string) {
> this.state.set('attribute', () => value);
> }
> get attribute(): string {
> return this.state.get('attribute');
> }
> ```
* Si besoin, pour observer une propriété, utiliser l'annotation `@RxStateSelect()`
```ts
get
attribute
():
string
{
return
this
.
state
.
get
(
'
attribute
'
);
}
@
Input
()
set
attribute
(
value
:
string
)
{
this
.
state
.
set
(
'
attribute
'
,
()
=>
value
);
}
@RxStateSelect() attribute$: Observable<string>;
```
> Pour information, `@RxStateSelect()` va générer automatiquement un code équivalent à :
> ```ts
> get attribute$(): Observable<string> {
> return this.state.select('attribute');
> }
> ```
-
Pour les modales (si besoin) :
*
Utiliser IonicModal.
*
Ne pas définir la modale dans le template HTML (inline) mais dans un composant séparé.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment