
Security News
AI Agent Lands PRs in Major OSS Projects, Targets Maintainers via Cold Outreach
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.
@jonhermansen/mobx-angular
Advanced tools
If you're looking for the Angular 1 version version, it's here
Install:
$ npm install --save mobx-angular mobx
Import the MobxAngularModule:
import { MobxAngularModule } from 'mobx-angular';
@NgModule({
imports: [..., MobxAngularModule]
})
export class MyModule {}
Use *mobxAutorun directive in your template:
import { Component, ChangeDetectionStrategy } from '@angular/core';
import {store} from './store/counter';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<div *mobxAutorun>
{{ store.value }} - {{ store.computedValue }}
<button (click)="store.action">Action</button>
</div>
`
})
export class AppComponent {
store = store;
}
The directive will do the following:
detectChanges method whenever there's a relevant changeUnder the hood, this magic happens by running autorun(() => view.detectChanges())
In order to inject the change detector, and implement lifecycle hooks like ngOnDestroy, this library uses a directive, which is the most elegant solution in Angular. It also has the benefit of allowing you to easily have multiple observed sections of your component's template, in case it is required.
You can improve your component's performance by detaching it from CD (Change Detection), by supplying *mobxAutorun="{ detach: true }".
This might cause things to stop updating. You have 3 options to manage that:
This method is deprecated - do not use it.
Aside from autorun, MobX allows you to react to specific data changes.
Usage:
import { Component, ChangeDetectionStrategy } from '@angular/core';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
template: `<div *mobxReaction="getParity.bind(this)">
{{ parity }}
</div>`
})
class AppComponent {
getParity() {
return this.parity = store.counter % 2 ? 'Odd' : 'Even';
}
}
The callback function will automatically re-run whenever any observable that it uses changes.
Change Detection will run automatically whenever the return value of callback changes.
If you don't return anything, change detection will not run.
In this example, the parity property will be updated according to counter,
and change detection will run only when the parity changes.
You can easily make your stores injectable:
import { observable, action } from 'mobx-angular';
@Injectable()
class Store {
@observable value;
@action doSomething() { ... }
}
To achieve great performance, you can set OnPush change detection strategy on your components (this can be configured as default in .angular-cli.json).
MobX will run change detection manually for you on the components that need to be updated.
mobx-angular comes with a handy debug tool. To turn on / off the debug tool, open developer tools' console, and run:
mobxAngularDebug(true) // turn on
mobxAngularDebug(false) // turn off
Then you can right-click on the components that use mobx directives, and you will see a console log of the components' dependencies. Also, every action that happens in mobx will be console.logged in a nice way.
TBD - support debugging for MobX 4
Some people complained about AoT when using mobx decorators inside components.
In case you do that - we export a proxy to the decorators from mobx-angular, which should be AoT compatible, e.g.:
import { observable, computed } from 'mobx-angular'
The only thing you can't do when importing from mobx-angular is using the modifiers, such as @observable.ref.
See the example folder, specifically these files:
/example/todos/src/app/stores/todos.store.ts
/example/todos/src/app/app.component.ts
To run the examples, clone this repo and run:
$ npm install -g @angular/cli
$ cd example/<example-folder>
$ npm install
$ npm start
FAQs
Angular connector to MobX (2 and above)
The npm package @jonhermansen/mobx-angular receives a total of 2 weekly downloads. As such, @jonhermansen/mobx-angular popularity was classified as not popular.
We found that @jonhermansen/mobx-angular demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.

Research
/Security News
Chrome extension CL Suite by @CLMasters neutralizes 2FA for Facebook and Meta Business accounts while exfiltrating Business Manager contact and analytics data.

Security News
After Matplotlib rejected an AI-written PR, the agent fired back with a blog post, igniting debate over AI contributions and maintainer burden.