LEDGEWOOD, N.J. — Nobody dislikes New Jersey Rep. Leonard Lance.

The moderate Republican voted against what were supposed to be his party’s major legislative achievements this Congress: the tax overhaul and the repeal of the 2010 health care law. And unlike many of his GOP peers, he’s actually held town hall meetings. His civility and the carefulness with which he chooses his words hark back to a different political era.

All that goes over well in his well-educated, affluent 7th District, where voters narrowly backed Hillary Clinton in 2016. But that might not be enough to save Lance this year.

With Democrats energized like never before, and unaffiliated voters looking for a check on President Donald Trump, the five-term Republican is in the fight of his life against Democrat Tom Malinowski, a former State Department official in the Obama administration. Polling has shown a close race, often within the margin of error. Inside Elections with Nathan L. Gonzales rates the contest Tilts Republican.

Flashback: The Race to Replace Frelinghuysen in New Jersey, Explained